#java #arrays
Вопрос:
Я практикуюсь в кодировании, прямо сейчас я практикуюсь в манипуляции с массивом, и я нашел следующий код для получения левой и правой диагональной суммы двумерного целочисленного массива. Для левой диагональной, я понимаю, что в основном счетчик увеличивается в обоих измерениях, поэтому я получаю ,[0][0],[1][1],[2][2] элементы из массива, который составляет левую диагональ. К сожалению, я на самом деле не понимаю, как правильно использовать выделенный передний экран. Почему я должен использовать .get(arr.size()-(j 1))
? Это потому, что я, если я не добавлю 1 к int 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 resu<
Комментарии:
1. Как вы знаете, левая диагональ есть
[0][0],[1][1],[2][2]
. Правая диагональ-это[0][2],[1][1],[2][0]
ака[0][2-0],[1][2-1],[2][2-2]
, где2
находитсяsize - 1
. Формула(size-1) - j
также может быть написанаsize - j - 1
илиsize - (j 1)
.
Ответ №1:
Это потому, что я, если я не добавлю 1 к int j, я получу исключение ArraysOutOfBondsException?
ДА.
Массивы в Java индексируются с 0, поэтому , если у вас есть массив определенного размера n
, то последний элемент индексируется с n - 1
помощью .