【问题标题】:How to find sum of elements of diagonals in 2d ArrayList?如何在 2d ArrayList 中找到对角线元素的总和?
【发布时间】:2020-02-27 13:32:19
【问题描述】:

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

List<List<Integer>> arr

【问题讨论】:

  • value = list.get(i).get(i);
  • 谢谢你,先生!!

标签: java matrix arraylist multidimensional-array sum


【解决方案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;

    }

【讨论】:

  • 尽管您的回答很好地解释了如何访问二维数组列表的元素的问题。函数结果基本上返回前导元素和反对角元素之和的差。您应该在代码中添加一些解释作为最佳实践。
  • @Debi 我会确保我这样做。谢谢
【解决方案2】:

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

假设您的矩阵、二维数组或二维数组列表(无论您调用什么)是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,如果是奇数,你应该在和之后减去中心元素一次。

【讨论】:

    【解决方案3】:
        int diagnolSum = 0;
    
        for (int i = 0; i < arr.size(); i++) {
            diagnolSum += arr.get(i).get(i);
        }
    

    【讨论】:

    • 解释你的答案
    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多