0
的頻率的範圍內進行排序整數的升序排列的陣列
我的輸入是如下LINQ或蘭巴於設定其重複
int[] arr = new int[] { 3, 1, 2, 2, 4, 6, 6, 9, 9, 9, 7, 7, 7};
所見,
3,1,4 are repeated only 1 time
2, 6 are repeated 2 times each
9, 7 are repeated 3 times each.
如何寫邏輯,用於按照在出現頻率範圍內升序的方式對數組進行排序
上述陣列的預期輸出爲 1, 3, 4, 2, 2, 6, 6, 7, 7, 7, 9, 9, 9
我嘗試:
var res = (arr.OrderBy(i => i).Reverse()
.GroupBy(x => x)
.Where(g => g.Count() >= 1)
.ToDictionary(x => x.Key, y => y.Count())
.Select(x => x) // stuck here
).ToList();
是否有任何規範限制你只使用LINQ而不是傳統的for循環,它可以使你的嘗試更容易? – apomene
@apomene:傳統的循環也會做,但首選使用LINQ或Lambda –
你不應該訂購你正在分組的項目。並按'Count'ThenBy'值排序。 'SelectMany'是扁平化一個兩級目標樹的關鍵 –