我有一個數據列表,我想找到列表中相等的最長元素序列的長度。這對於集合上的循環很容易,但是我想知道是否有可以做到這一點的Linq查詢。謝謝你的幫助。您可以使用Linq查找集合中元素之間的關係嗎?
0
A
回答
1
var longest = list.Select((x,i) => list.Skip(i).TakeWhile(c => c == x).Count()).Max();
+1
請注意,你做了很多計數一遍又一遍不必要...當它可能是O(n)時,這是O(n^2)。如果這個問題給OP ... – Servy
+0
是的,對於大型列表,循環可能會快得多。 –
0
只是遍歷序列遞增計數器,當一個項目是等於先前和重置它,如果它不是。
public static int LongestSequence<T>(IEnumerable<T> source, IEqualityComparer<T> comparer)
{
comparer = comparer ?? EqualityComparer<T>.Default;
using (var iterator = source.GetEnumerator())
{
if (!iterator.MoveNext()) //empty sequence
return 0;
T previous = iterator.Current;
int count = 1;
int maxCount = 1;
while (iterator.MoveNext())
{
if (comparer.Equals(iterator.Current, previous))
{
count++;
}
else
{
maxCount = Math.Max(maxCount, count);
count = 1;
previous = iterator.Current;
}
}
return maxCount;
}
}
相關問題
- 1. 查找數據集中元素之間關係的算法
- 2. Linq:在集合中查找元素
- 3. 如何在集合中的元素之間創建關係
- 4. 可以使用列表查找查詢中的行集合嗎?
- 5. 您可以使用cvCalibrateCamera2來查找兩臺攝像機之間的外在關係嗎?
- 6. 查找Linq中兩個集合中不同的子元素
- 7. 如何使關係集合之間3
- 8. 用Jython和dom4j可以在元素之間添加元素嗎?
- 9. 您可以使用Make中的$(shell查找)中的%嗎?
- 10. Linq在C#中查詢以獲取關於列表的元素集合
- 11. 查詢MongDB與集合之間的間接關係
- 12. C++ STL集:我可以使用upper_bound()來查找數字與集合元素的最小差異嗎?
- 13. 在集合中查找元素
- 14. 可以在元素關閉之前定位元素嗎?
- 15. C#:使用Linq&Lambda獲取2個集合之間無與倫比的元素
- 16. 獲取F#集合中兩個元素之間的元素
- 17. 我可以使用activerecord關係來查找嵌套屬性嗎?
- 18. 在Apigee App Services中,您可以查詢數組元素嗎?
- 19. 您可以在<section role =「main」>元素中使用<aside>元素嗎?
- 20. 我們可以使用「鏈接」屬性來查找元素嗎?
- 21. 您可以使用javascript設置select元素的defaultSelected值嗎
- 22. 在集合中查找元素的索引,要使用哪個集合?
- 23. LINQ c#集合中的唯一元素
- 24. 查找與關係之間的區別
- 25. [Freebase]:查找節點之間的關係
- 26. 您可以與Symfony(使用Doctrine)產生關係嗎?
- 27. 簡化列表中查找一個元素,可能使用LINQ
- 28. 我可以在集合上使用Iterator來獲取Java中的元素嗎?
- 29. 查找樹結構中元素之間的關係,其中沒有初始關係
- 30. 我可以使用帶'path'元素的混合單元嗎?
粘貼與循環的代碼,我們不知道你的數據是什麼樣子.. –
它不應該的問題,所有重要的是該元素類型支持相等比較。假裝它是一個整數列表。 – user200814