189. 轮转数组

2024/4/18 算法

题目链接:189. 轮转数组 (opens new window)

经典轮转题目,只用记一种方法:逆置。可以自己重写reverse函数。代码如下:

class Solution {
    public void reverse(int[] nums, int l, int r) {
        // 逆置操作
        while (l < r) {
            int temp = nums[l];
            nums[l] = nums[r];
            nums[r] = temp;
            l++;
            r--;
        }
    }

    public void rotate(int[] nums, int k) {
        k = k % nums.length;//这里k的可能大于nums.length,因此取模,相当于多轮转一圈
        reverse(nums, 0, nums.length - k - 1);
        reverse(nums, nums.length - k, nums.length - 1);
        reverse(nums, 0, nums.length - 1);
    }
}