回答
是的,你可以使用linq做到這一點,但代碼是不是很可讀。使用循環更清晰的代碼。
var ind = 0;
var result = ar.Select((i, index) => index > 0 ? new { Val = ar[index], ValIndex = ar[index] > ar[index - 1] ? ind : ++ind } : new { Val = ar[index], ValIndex = 0 }).GroupBy(t => t.ValIndex).Select(x => new { GroupKey = x.Key, Group = x }).OrderByDescending(g => g.Group.Count()).First();
foreach (var r in result.Group)
{
Console.WriteLine(r.Val);
}
謝謝!這是最好的答案。 – Rejk
您想確定數組中幾個項目之間的關係,並按特定的順序。 Linq並不適合這一點,它更容易遍歷數組,檢測每個繼承的大小並記住最大的繼承。
由於這是一個家庭作業的問題,我不會給你一個完整的解決方案,但這裏有一些提示:
您需要遍歷號碼,並保持兩件事軌跡:
當前增加序列的長度(最初爲0)和序列的最後一個數字(如果數字爲正數,最初爲-1)。例如,迭代1和5後,這兩個值將是2(長度)和5(最後一個數字)。
到目前爲止發現的最佳序列的長度 - 例如,如果你在你的例子結束,當前序列具有長度2(最後兩個數字是1和2),但你先前發現長度爲3
序列就可以解決這個使用LINQ - 您可以使用Aggregate
擴展方法來編寫保持當前狀態的迭代。然而,寫這個使用for
循環將可能更容易(特別是如果你正在學習)
你可以寫一個這樣的方法:
IList<T> GetLongestIncreasingSequence<T>(IEnumerable<T> source)
{
var comparer = Comparer<T>.Default;
List<T> longest = null;
List<T> tmp = new List<T>();
T previous = default(T);
bool first = true;
foreach (var item in source)
{
if (first || comparer.Compare(item, previous) > 0)
{
tmp.Add(item);
}
else
{
if (tmp.Any() && (longest == null || longest.Count < tmp.Count))
{
longest = tmp;
}
tmp = new List<T>();
tmp.Add(item);
}
first = false;
previous = item;
}
if (tmp.Any() && (longest == null || longest.Count < tmp.Count))
{
longest = tmp;
}
return longest;
}
用法:
int[] values = { 1, 5, 1, 2, 3, 1, 2 };
var longest = GetLongestIncreasingSequence(values);
這不是一個Linq的解決方案,但我不認爲有一種方便的方式來與Linq做...
只是一個建議,而不是有一個臨時列表,保存每個序列的開始和結束,比較並保持最長的序列,並通過使用** GetRange **或**來檢索最長範圍。Skip() .Take()** ... – AJC
- 1. 列表數組問題
- 2. 數組列表問題
- 3. 數組列表的問題
- 4. Linq列表的問題
- 5. LINQ組問題
- 6. 分類列表數組問題
- 7. C#列表到數組問題
- 8. 問題與動態數組列表
- 9. 從數組列表中打印問題
- 10. Objective-C數組/列表問題
- 11. Java數組列表的大小問題
- 12. linq to C#中的列表問題#
- 13. 列表和Linq SQL性能問題
- 14. C#LINQ分組問題
- 15. Linq 2 SQL分組問題
- 16. Linq的分組問題
- 17. LINQ組通過問題
- 18. LINQ組按月問題
- 19. Linq的分組問題
- 20. 按Linq問題分組
- 21. LINQ列表屬性到數組?
- 22. 簡單的LINQ問題:使用LINQ獲得屬性數組
- 23. Linq的分組與列表
- 24. Linq的分組到列表
- 25. 組列表使用LINQ
- 26. 數據表列表/陣列問題
- 27. 訪問數組列表中
- 28. 在Java中訪問嵌套數組列表時遇到問題
- 29. 訪問和修改數組列表的問題
- 30. 的LINQ to SQL:對列表,數組和對象列表
聽起來像是作業問題或面試問題。無論如何,你應該告訴我們你至少已經嘗試了一些東西。我們不是你的代碼猴子。 –