我读了这样一个旋转数组的解决方案问题: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
提交
取消