C# 如何求List<List<int>>集合各相同索引位置的最大整数值
实现方案
最优性能实现代码
public List<int> FindMaxValueByIndex(List<List<int>> items) { // 入参合法性校验 if (items == null || items.Count == 0) return new List<int>(); int subLength = items[0].Count; // 预分配结果容量,避免动态扩容开销 List<int> maxResults = new List<int>(subLength); // 初始化所有位置为int最小值,避免全负值场景下结果错误 for (int i = 0; i < subLength; i++) { maxResults.Add(int.MinValue); } // 提前缓存长度值,减少循环内属性访问开销 int listCount = items.Count; for (int i = 0; i < listCount; i++) { List<int> currentList = items[i]; for (int j = 0; j < subLength; j++) { int currentValue = currentList[j]; if (currentValue > maxResults[j]) { maxResults[j] = currentValue; } } } return maxResults; }
性能说明
- 时间复杂度为
O(m*n)(m为子列表数量、n为单个子列表长度),达到理论最优下限,所有元素仅被遍历一次 - 提前预分配结果列表容量,避免List动态扩容过程中的内存拷贝开销
- 直接使用索引访问集合元素,无LINQ迭代器、集合转置等额外中间开销
- 空间复杂度为
O(n),仅占用存储结果所需的内存空间,无额外中间内存占用
内容的提问来源于stack exchange,提问作者Kiran B
相关产品推荐
相关产品推荐

