leetcode (Rotate Array)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hsx1612727380/article/details/84375718

Title:Rotate Array    189

Difficulty:Easy

原题leetcode地址:https://leetcode.com/problems/rotate-array/

1. 详细讲解见代码注释,时间&空间复杂度如下:

时间复杂度:O(n),最长需要遍历整个数组的长度。

空间复杂度:O(1),没有额外申请空间。

    /**
     * 3次反转
     *      1. 反转K之前的数
     *      2. 反转K之后的数
     *      3. 反转整个数组
     *   注意:题目给的K的大小可能比nums的长度大
     * @param nums
     * @param k
     */
    public static void rotate(int[] nums, int k) {

        int kk = k % nums.length;
        reverse(nums, 0, nums.length - kk - 1);
        reverse(nums, nums.length - kk, nums.length - 1);
        reverse(nums, 0, nums.length - 1);

    }

    private static void reverse(int nums[], int start, int end) {

        for (int i = start, j = end; i < j; i++, j--) {
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }

    }

猜你喜欢

转载自blog.csdn.net/hsx1612727380/article/details/84375718
今日推荐