我需要在排序的整数列表中获取彼此相等的所有最大元素的索引.
所以给出这个清单
elements: {1 , 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 12, 13, 13, 13}
index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
^ ^ ^
Run Code Online (Sandbox Code Playgroud)
我会得到这个输出
{16,17,18}
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经有了
list.Select((x, i) => new {x, i})
Run Code Online (Sandbox Code Playgroud)
要获得指数,但我不能使用OrderBy()带有First()或Single()因为我需要的所有元素最多人指数,不只是极顶一个.
是否有一种优雅的方法来实现这一点(使用LINQ或其他方式)?
因此,对项目进行排序,您只需要获取具有最大值的第一个项目的索引(该项目将与最后一个项目具有完全相同的值),然后创建从此索引开始到列表末尾的索引范围:
var items = new List<int> {1,1,2,3,4,4,5,6,7,7,8,9,10,11,11,12,13,13,13};
int startIndex = items.IndexOf(items[items.Count - 1]);
var indexes = Enumerable.Range(startIndex, items.Count - startIndex);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |