如何在二维数组列表中求对角线元素的和



我不知道如何访问2DArrayList中的元素。我需要找到2DArrayList中对角线的和。

List<List<Integer>> arr

public static int diagonalDifference(List<List<Integer>> arr) {
int size = arr.size();
int add1=0;
int add2=0;
for(int i=0 ; i < size ; i++){
add1 = add1+  arr.get(i).get(i);
add2 = add2+ arr.get(i).get(size -i-1);
}
int absoluteValue =Math.abs( add1 - add2);
return absoluteValue;
}

我看到您在问题中使用了对角线。矩阵有两条对角线,前导对角线((和

反对角线假设你的矩阵,二维数组,或者二维数组,不管你叫什么,都是i * i矩阵,你可以在一个循环中计算:

int leadingDiagonalSum = 0, antiDiagonalSum = 0;
int size = arr.size();
for (int i = 0; i < size; i++) {
leadingDiagonalSum += arr.get(i).get(i);
antiDiagonalSum += arr.get(i).get(size - i - 1);
}

上面的代码很容易理解。如果您真的想要对角线之和,您可以将这两个变量相加。

但是,您应该检查size,如果它是奇数,您应该在和之后减去中心元素一次

int diagnolSum = 0;
for (int i = 0; i < arr.size(); i++) {
diagnolSum += arr.get(i).get(i);
}

最新更新