我讀了這樣一個旋轉數組的解決方案問題: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]
4 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
它是單個元素,他正在將元素放在位置上,并且內部的值正在與:交換,因為您有:num.length -1
nums[j]
j=0
temp = num[0]; num[0] = num[num.length-1] num[num.length-1] = temp;
等等。

米脂
TA貢獻1836條經驗 獲得超3個贊
它是單個元素,因為 是 一個,只是為您提供數組的最后一個可訪問索引。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++)
最后一次迭代將嘗試訪問數字[數字長度],這不存在...

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
nums[nums.length - 1];
為您提供數組的最后一個位置。它是 -1,因為數組的位置以 0 開頭,而不是以 1 開頭。
如果不寫 -1,則會出現越界異常。

大話西游666
TA貢獻1817條經驗 獲得超14個贊
單身,這是由于你正在執行一個數學表達式,然后從中得到一個valeu。這意味著你取數組列表的長度,然后減去1,然后得到該值,換句話說,你得到最后一個值。
要獲取所有值,您必須像 for 循環等一樣循環。
for (i = 0; i < array.length; i++) { System.out.print(array[i]); }
添加回答
舉報
0/150
提交
取消