美文网首页
189. 旋转数组

189. 旋转数组

作者: Andysys | 来源:发表于2019-12-30 22:25 被阅读0次
    // 使用环状替换
    public void rotate(int[] nums, int k) {
        final int length = nums.length;
        k = k % length;
        int count = 0;
        int current, prev, next, temp;
        for (int start = 0; count < length; start++) {
            current = start;
            prev = nums[start];
            do {
                next = (current + k) % length;
                temp = nums[next];
                nums[next] = prev;
                prev = temp;
                current = next;
                count++;
            } while (start != current);
        }
    }

    // 使用反转
    public void rotate2(int[] nums, int k) {
        final int length = nums.length;
        k %= length;
        reverse(nums, 0, length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, length - 1);
    }

    private void reverse(int[] nums, int start, int end) {
        int temp;
        while (start < end) {
            temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start++;
            end--;
        }
    }

相关文章

  • LeetCodeDay02

    189. 旋转数组 描述 将包含 n 个元素的数组向右旋转 k 步。 例如,如果 n = 7 , k = 3,...

  • 189. 旋转数组

    189. 旋转数组[https://leetcode-cn.com/problems/rotate-array/]...

  • 算法:旋转数组

    189. 旋转数组[https://leetcode-cn.com/problems/rotate-array/]...

  • 189. 旋转数组

    内容 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4...

  • 189. 旋转数组

    将包含n个元素的数组向右旋转k步。 例如,如果n= 7 ,k= 3,给定数组[1,2,3,4,5,6,7],向右旋...

  • 189. 旋转数组

    文|Seraph 1 问题 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。不要使用额外的数...

  • 189. 旋转数组

    给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,...

  • 189. 旋转数组

    题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: 说明: ...

  • 189. 旋转数组

  • [LeetCode] 189. 旋转数组

    将包含* n* 个元素的数组向右旋转 *k *步。 例如,如果 n = 7 , k = 3,给定数组 [1,...

网友评论

      本文标题:189. 旋转数组

      本文链接:https://www.haomeiwen.com/subject/knbeoctx.html