java - 这种方法如何从二维数组中获得正确的对角线?
问题描述
我正在练习编码,现在我正在练习数组操作,我找到了以下代码来获取二维整数数组的左右对角线和。对于 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;
解决方案
是因为如果我不将 +1 添加到 int j 我会得到 ArraysOutOfBondsException 吗?
是的。
Java 中的数组是从 0 开始索引的,所以如果你有一个大小为 的数组n
,那么最后一项是用 索引的n - 1
。
推荐阅读
- javascript - 这个函数的运行时复杂度是多少?
- javascript - react-ga 未将 Google Analytics Tracker 添加到页面
- python - 使用 pip 安装 web3 时出错。找不到满足 ipfshttpclient==0.7.0 要求的版本
- c# - 使用参数调用 resx 文本
- azure - 使用 Microsoft.Azure.Functions.Worker.Http 中的 HttpRequestData,如何检索远程 IP 地址?
- filtering - IIR 滤波的 SIMD 优化
- ssl - ActiveMQ Artemis ha=true 和 SSL 连接器
- javascript - 谷歌地图信息框 Js 和 PHP
- elasticsearch - Ansible:从 group_vars 派生的 ip 周围的引号
- linux - QEMUI/KVM virtio-serial 没有主机到 VM 的连接