如何在2D ArrayList中找到对角线元素的总和?

3

我不知道如何访问二维ArrayList中的元素。我需要找到二维ArrayList对角线上所有元素的和。

List<List<Integer>> arr


1
value = list.get(i).get(i); - Stephen C
谢谢您,先生! - user12065050
3个回答

1
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;

    }

1
虽然您的答案很好地解释了如何访问 2D 数组列表的元素。但是函数结果基本上返回前导和副对角线元素之和的差异。作为最佳实践,您应该添加一些对代码的说明。 - Debi
@Debi 我会确保做到的。谢谢。 - Sachini Witharana

1

我看到你在问题中使用了对角线。矩阵有两个对角线,一个是主对角线\),另一个是副对角线/)。

假设你的矩阵,即2D数组或2D ArrayList,是一个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);
}

上述代码易于理解。如果您真的想要对角线之和,可以将这两个变量相加。
然而,您应该检查大小,如果它是奇数,您应该在求和后减去中心元素一次。

-1
    int diagnolSum = 0;

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

1
解释你的答案 - SSP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接