首页 > 解决方案 > 这种方法如何从二维数组中获得正确的对角线?

问题描述

我正在练习编码,现在我正在练习数组操作,我找到了以下代码来获取二维整数数组的左右对角线和。对于 leftDiagonal,我理解,基本上计数器在两个维度上都会增加,因此我从数组中获取 ,[0][0],[1][1],[2][2] 元素,这使得左对角线。不幸的是,我真的不明白 rightDiagonal 是如何与突出显示的 forloop 一起使用的。为什么我必须使用.get(arr.size()-(j+1))?是因为如果我不加 +1int j我会得到ArraysOutOfBondsException吗?谢谢你的热心帮助。

 public static int diagonalDifference(List<List<Integer>> arr) {
        int leftDiagonal = 0;
        int rightDiagonal = 0;
        for(int i=0; i < arr.size(); i++){
    leftDiagonal += arr.get(i).get(i);
        }
  -->      for(int j=0; j < arr.size(); j++){
    rightDiagonal += arr.get(j).get(arr.size()-(j+1)); 
        } <--
    int result = Math.abs(leftDiagonal -rightDiagonal);
    return result;

标签: javaarrays

解决方案


是因为如果我不将 +1 添加到 int j 我会得到 ArraysOutOfBondsException 吗?

是的。

Java 中的数组是从 0 开始索引的,所以如果你有一个大小为 的数组n,那么最后一项是用 索引的n - 1


推荐阅读