【发布时间】:2018-10-18 09:22:17
【问题描述】:
我正在尝试在整数数组中查找最大值的出现次数。
例如
int[] ar = [3, 1, 2, 3];
这里,Max 3 重复了两次,所以预期的输出是 2。
这行得通,我得到计数为2,因为最大值3 在数组中出现了两次
var max = int.MinValue;
var occurrenceCount = 0;
foreach(var x in ar)
{
if (x >= max) max = x;
}
foreach(var x in ar)
{
if (x == max) occurrenceCount++;
}
输出:2 //occurrenceCount
Linq 更简单,
var occurrenceCount = ar.Count(x => x == ar.Max())
输出:2 //occurrenceCount
现在没有Linq,有没有简化或有效的方法来做到这一点?
【问题讨论】:
-
您想知道如何更高效地最大化和计数吗?
-
是的,想知道数组中的最大值和最大出现次数
-
您想要哪个:简化还是高效?总是有一个权衡。如果您制定的解决方案只通过列表一次,它会更有效,但可能更复杂。
-
Max and GetCount 参考这里。两者都有一个 foreach,也许你可以用聪明的方式重构它们。
-
@PalleDue,很好的查询,我更喜欢高效的方式。是不是问题中的linq查询效率不高?
标签: c# linq max find-occurrences