C# 如何获取数组中最大数的所有索引?

C# 如何获取数组中最大数的所有索引?,c#,arrays,C#,Arrays,例如,我有一个数组 arr[5] = {1, 5, 2, 3, 5} 最高的数字显然是5 我的问题是如何获得最高数字(即5)的两个索引 预期结果是1和4。var arr=newint[]{1,5,2,3,5}; var arr = new int[] { 1, 5, 2, 3, 5 }; int max = arr.Max(); List<int> indexes = new List<int>(); for (int i

例如,我有一个数组

arr[5] = {1, 5, 2, 3, 5}
最高的数字显然是5

我的问题是如何获得最高数字(即5)的两个索引

预期结果是1和4。

var arr=newint[]{1,5,2,3,5};
var arr = new int[] { 1, 5, 2, 3, 5 };
        int max = arr.Max();
        List<int> indexes = new List<int>();
        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] == max)
                indexes.Add(i);
        }
int highindex = indexes.LastOrDefault();
int max=arr.max(); 列表索引=新列表(); 对于(int i=0;i
var arr=newint[]{1,5,2,3,5};
int max=arr.max();
列表索引=新列表();
对于(int i=0;i
这就是您获取最高编号的所有索引的方式

var numbers = new int[] { 1, 5, 2, 3, 5 };

int max = numbers.Max();

var indexes = numbers.Select((c, i) => new 
                                       { 
                                          character = c, index = i 
                                       })
                     .Where(list => list.character == max)
                     .ToList();

这就是你如何得到你的最高数字的所有索引

var numbers = new int[] { 1, 5, 2, 3, 5 };

int max = numbers.Max();

var indexes = numbers.Select((c, i) => new 
                                       { 
                                          character = c, index = i 
                                       })
                     .Where(list => list.character == max)
                     .ToList();

您可以使用LINQ查询查找等于最大数量的数字和索引:

var arr=new[] {1, 5, 2, 3, 5};
var max    = arr.Max();
var indexes= arr.Select( (n,idx)=>n==max?idx:-1)
                .Where(idx=>idx!=-1)
                .ToArray();
这将返回
{1,4}

此查询使用提供当前元素索引的重载,如果该数字等于最大值,则返回该索引

最初的标题有点混乱——如何找到两个最大的值。您可以使用类似的查询,通过选择值和索引、对结果进行排序并获取前N项来获取N个最大值:

var indexes = arr.Select( (val,idx)=> (val:val,idx:idx) )
                 .OrderByDescending(p=>p.val)
                 .Take(2)
                 .Select(p=>p.idx);

此查询使用C#7元组保存中间结果并为其命名

您可以使用LINQ查询查找等于最大值的数字和索引:

var arr=new[] {1, 5, 2, 3, 5};
var max    = arr.Max();
var indexes= arr.Select( (n,idx)=>n==max?idx:-1)
                .Where(idx=>idx!=-1)
                .ToArray();
这将返回
{1,4}

此查询使用提供当前元素索引的重载,如果该数字等于最大值,则返回该索引

最初的标题有点混乱——如何找到两个最大的值。您可以使用类似的查询,通过选择值和索引、对结果进行排序并获取前N项来获取N个最大值:

var indexes = arr.Select( (val,idx)=> (val:val,idx:idx) )
                 .OrderByDescending(p=>p.val)
                 .Take(2)
                 .Select(p=>p.idx);

这个查询使用C#7元组来保存中间结果并给它们命名

这更多的是算法。首先,假设前两个是最大的两个,然后阅读其他的并进行调整。你能澄清一下你对结果的预期吗?你需要找到数组中5的所有索引吗?我需要在arr[1]中找到1,在arr[4]中找到4。我想你已经知道如何找到最大元素了。此问题将帮助您查找所有事件:@defaultlocale:感谢您指向我的答案。:)这更多的是算法。首先,假设前两个是最大的两个,然后阅读其他的并进行调整。你能澄清一下你对结果的预期吗?你需要找到数组中5的所有索引吗?我需要在arr[1]中找到1,在arr[4]中找到4。我想你已经知道如何找到最大元素了。此问题将帮助您查找所有事件:@defaultlocale:感谢您指向我的答案。:)您不需要列表,简单的LINQ查询将返回相同的结果您不需要列表,简单的LINQ查询将返回相同的结果简单而高效的解决方案…..简单而高效的解决方案。。。。。