为了账号安全,请及时绑定邮箱和手机立即绑定

'数字长度 - 1];' 是一个范围还是单个元素?

'数字长度 - 1];' 是一个范围还是单个元素?

米琪卡哇伊 2022-09-22 10:17:11

我读了这样一个旋转数组的解决方案


问题:


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贡献1490条经验 获得超10个赞

它是单个元素,他正在将元素放在位置上,并且内部的值正在与:交换,因为您有:num.length -1nums[j]j=0

temp = num[0];
num[0] = num[num.length-1]
num[num.length-1] = temp;

等等。


查看完整回答
反对 回复 5天前
?
米脂

TA贡献1508条经验 获得超3个赞

它是单个元素,因为 是 一个,只是为您提供数组的最后一个可访问索引。num.lengh - 1int

如果检查数组的长度是否为 ,则可以安全地使用数组的长度来确定最后一个可访问的索引。> 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++)

最后一次迭代将尝试访问数字[数字长度],这不存在...


查看完整回答
反对 回复 5天前
?
临摹微笑

TA贡献1658条经验 获得超2个赞

nums[nums.length - 1];为您提供数组的最后一个位置。它是 -1,因为数组的位置以 0 开头,而不是以 1 开头。

如果不写 -1,则会出现越界异常。


查看完整回答
反对 回复 5天前
?
大话西游666

TA贡献1479条经验 获得超13个赞

单身,这是由于你正在执行一个数学表达式,然后从中得到一个valeu。这意味着你取数组列表的长度,然后减去1,然后得到该值,换句话说,你得到最后一个值。

要获取所有值,您必须像 for 循环等一样循环。

for (i = 0; i < array.length; i++) {
 System.out.print(array[i]);
}


查看完整回答
反对 回复 5天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信