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

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


问题:


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]


米琪卡哇伊
浏览 98回答 4
4回答

holdtom

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

米脂

它是单个元素,因为 是 一个,只是为您提供数组的最后一个可访问索引。num.lengh - 1int如果检查数组的长度是否为 ,则可以安全地使用数组的长度来确定最后一个可访问的索引。> 0数组的长度经常用于像你的循环这样的循环中:此处的长度用于确保您不会访问不可用的索引:for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;nums.length;&nbsp;j++)您可以在不更改功能的情况下编写稍微不同的条件for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<=&nbsp;nums.length&nbsp;-&nbsp;1;&nbsp;j++)但是,如果您执行以下操作,您将获得一个:IndexOutOfBoundsExceptionfor&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<=&nbsp;nums.length;&nbsp;j++)最后一次迭代将尝试访问数字[数字长度],这不存在...

临摹微笑

nums[nums.length - 1];为您提供数组的最后一个位置。它是 -1,因为数组的位置以 0 开头,而不是以 1 开头。如果不写 -1,则会出现越界异常。

大话西游666

单身,这是由于你正在执行一个数学表达式,然后从中得到一个valeu。这意味着你取数组列表的长度,然后减去1,然后得到该值,换句话说,你得到最后一个值。要获取所有值,您必须像 for 循环等一样循环。for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;array.length;&nbsp;i++)&nbsp;{ &nbsp;System.out.print(array[i]); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java