#java
#java
Вопрос:
Я прочитал такое решение для поворота массива
вопрос:
public class Solution {
public void rotate(int[] nums, int k) {
int temp, previous;
for (int i = 0; i < k; i ) {
previous = nums[nums.length - 1];
for (int j = 0; j < nums.length; j ) {
temp = nums[j];
nums[j] = previous;
previous = temp;
}
}
}
}
Я в замешательстве по поводу previous = nums[num.lengh -1]
,
это диапазон как nums[0:10]
или один элемент как nums[0]
?
Комментарии:
1. Это один элемент, потому что
num.lengh -1
просто дает вам последний доступный индекс массива.2. о, спасибо, я понял, постоянно меняйте местами текущий и предыдущий, не могли бы вы, пожалуйста, передать комментарий для ответа @deHaar
Ответ №1:
Это один элемент, он занимает элемент в num.length -1
позиции, а значение внутри заменяется на nums[j]
: для j=0
вас есть:
temp = num[0];
num[0] = num[num.length-1]
num[num.length-1] = temp;
И так далее.
Ответ №2:
Это один элемент, потому что num.lengh - 1
является int
и просто дает вам последний доступный индекс массива.
Если вы проверите, равна ли длина массива > 0
, то вы можете безопасно использовать длину массива для определения последнего доступного индекса.
Длина массива очень часто используется в циклах, подобных вашему:
Здесь длина используется, чтобы убедиться, что вы не получаете доступ к недоступным индексам:
for (int j = 0; j < nums.length; j )
Вы можете написать немного другое условие без изменения функциональности
for (int j = 0; j <= nums.length - 1; j )
Но если вы сделаете следующее, вы получите IndexOutOfBoundsException
:
for (int j = 0; j <= nums.length; j )
Последняя итерация будет пытаться получить доступ к nums[nums.длина], которого там нет…
Ответ №3:
nums[nums.length - 1];
выдает последнюю позицию массива. Это -1, потому что позиции массива начинаются с 0, а не с 1.
Если вы не напишете -1, вы получите исключение за пределами.
Комментарии:
1. Как насчет
nums[-1]
, я думаю, что эта нарезка может легко извлечь последний элемент.2. Это не имеет никакого смысла. вы получите исключение. Внутри [] вы должны указать положение элемента внутри нужного вам массива. Это должно быть положительное число, начинающееся с 0
Ответ №4:
single, это связано с тем, что вы выполняете математическое выражение, а затем получаете значение из этого. это означает, что вы берете длину списка массивов, затем вычитаете 1 и затем получаете это значение или, другими словами, вы получаете последнее значение.
чтобы получить все значения, вы должны выполнить цикл, подобный циклу for и т.д.
for (i = 0; i < array.length; i ) {
System.out.print(array[i]);
}