查找 int 数组中的第 n 个最大数组

本文关键字:数组 int 查找 | 更新日期: 2024-11-01 01:19:53

我需要能够找到int array中第 n 个最大的数字,我已经有一个返回一些东西的 linq 语句,但它没有传递设置的用例。array是:

var numbers = new[] { 5, 7, 5, 3, 6, 7, 9 };

我的代码是:

  var result = numbers.GroupBy(x => x)
                .OrderByDescending(group => group.Key)
                .SkipWhile(group =>
                {
                    n -= group.Count();
                    return n > 0;
                })
                .First()
                .ToArray();

我不明白为什么我没有得到预期的结果?

  result[0] == 9
  result[1] == 7

查找 int 数组中的第 n 个最大数组

在集合按降序排序后,您可以使用 Take() 来获取n最大的项目:

var result = numbers.GroupBy(x => x)
                    .OrderByDescending(group => group.Key)
                    .Take(n)
                    .Select(group => group.Key)
                    .ToArray();

dotnetfiddle demo

或者,如果您打算只获取第 n 项,请使用 Skip(n-1).Take(1)