私は変数に格納されている最高ランクのアイテムのリストを持っていますトップリスト。他のリストから一番高いランクのアイテムを見つけよう
は、その後、私は、私は、変数currentListに格納アイテム
の現在のリストを持っている目標は、最高のほんにランクされてcurrentListの要素を見つけることです。
[TestMethod]
public void MethodName14() {
var topList = new List<string>() {"AB", "DC", "ZG"}; // ordered by highest rank
var currentList = new List<string> {"ZG", "DC"};
var actual = ReturnTop(currentList, topList);
Assert.Equal("DC", actual); // because DC is in index 2 and ZG is in index 3
}
private string ReturnTop(List<string> currentList, List<string> topList) {
string result = null;
int index = 0;
foreach (var current in currentList) {
var lookupedCurrentIndex = topList.FindIndex(a => a == current);
if (index == 0) {
result = topList[index];
index = lookupedCurrentIndex;
} else {
if (lookupedCurrentIndex < index) {
index = lookupedCurrentIndex;
result = topList[index];
}
}
}
return result;
}
私のメソッドReturnTopは遅すぎるので、O(n²)です。私たちはもっとうまくできますか?
それは 'topList.Intersect(currentList).FirstOrDefault()' https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,ae06318d1f5fb355 – Slai
に短縮することができますように思えます@スレイあなたはそうです、ありがとう! – dasblinkenlight