给定任何2D数组忽略每个数组中的最小值和最大值(如果存在多个最小/最大值的值,则忽略一个)。然后计算剩余值的总和。
int[,] scores = {
{ 5, 8, 9, 3, 8, 5},
{ 3, 9, 6, 3, 9, 5, 7}
};
第一个数组的总和将返回26 第二个数组的总和将返回30
存储这些总数。
答案 0 :(得分:0)
我怀疑你是MultiDimensional
数组还是数组数组(Jagged Arrays
)。您无法在dimensions
数组中拥有不同的MultiDimensional
。
所以我假设你有阵列数组,现在你可以这样做。
int[][] numbers2 = new int[][]
{
new int[] {1, 4,5,6, 10},
new int[] {1,-2,3, 10, 1, },
new int[] {-7,-8,-9, -1, 0}
};
var sum_array =numbers2.Select(x => x.OrderBy(c=>c)
.Skip(1)
.Take(x.Length-2)
.Sum(c=>c)
);
<强>输出:强>
15,5,-16
如果您想处理Multidimensional
数组,请执行此操作。
int[,] numbers = new int[3,5]
{
{1, 4,5,6, 10},
{1,-2,3, 10, 1, },
{-7,-8,-9, -1, 0}
};
var row_sum = numbers.Cast<int>()
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / (numbers.GetUpperBound(1) +1))
.Select(x => x.OrderBy(c=>c.Value).Skip(1).Take(numbers.GetUpperBound(1)-1).Sum(c=>c.Value))
.ToArray();
这两种情况都会得到相同的输出。
检查example