我正在练习编码,现在我正在练习数组操作,我发现以下代码用于获取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
索引的。