189. Rotate Array的问题?

发布于 2022-09-06 10:44:05 字数 1411 浏览 16 评论 0

Rotate Array

Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

[show hint]

Related problem: Reverse Words in a String II

Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.

import java.util.Arrays;

class Solution {
    public static void rotate(int[] nums, int k) {
        int[] temp = Arrays.copyOf(nums, nums.length);
        if (nums.length >= k) {
            for (int i = 0; i < nums.length; i++) {
                if (i + k > nums.length - 1) {
                    temp[i + k - nums.length] = nums[i];
                } else {
                    temp[i + k] = nums[i];
                }

            }
        }
        nums = temp;
        print(nums);
    }

    private static void print(int[] nums) {
        for (int i : nums) {
            System.out.print(i);
        }

    }

    public static void main(String[] args) {
        int[] nums = { 1, 2 };
        rotate(nums, 1);
    }
}

leetcode提交显示:

Input:
[1,2]
1
Output:
[1,2]
Expected:
[2,1]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

檐上三寸雪 2022-09-13 10:44:05

nums = temp; 替换一个局部变量的引用没什么卵用哦

绅刃 2022-09-13 10:44:05

@CRIMX 已经说的很明白了,就不赘述了,附上修改好的代码

class Solution {
    public void rotate(int[] nums, int k) {
        int[] temp = Arrays.copyOf(nums, nums.length);
        for (int i = 0; i < nums.length; i++) {
        // 1,对调nums和temp在赋值等号左右两边的位置 2,用取模来处理k > nums.length的情况
            nums[(k + i)%nums.length] = temp[i];  
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文