这个方法如何从一个二维数组得到正确的对角线?



我正在练习编码,现在我正在练习数组操作,我发现以下代码用于获取2D整数数组的左和右对角线和。对于leftDiagonal,我理解,基本上计数器在两个维度上都是递增的,因此我得到了数组中的[0][0],[1][1],[2][2]元素,它们构成了左对角线。不幸的是,我真的不明白右对角线是如何与高亮forloop。为什么我要用.get(arr.size()-(j+1))?是不是因为如果我不给int j加上+1,就会得到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;

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

是的。

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

最新更新