189. Rotate Array - Medium

前往題目

想法

  • 這題以前做過,有個想法很簡單而且還是in-place但是想不起來

思路

看了一下以前的submission,恍然大悟,就是先全部反轉,然後反轉左半部,再反轉右半部

Code

class Solution {
    public void rotate(int[] nums, int k) {
        k %= nums.length;
        // Reverse the entire array
        reverse(nums, 0, nums.length - 1);
        // Reverse the left part
        reverse(nums, 0, k - 1);
        // Reverse the second part
        reverse(nums, k, nums.length - 1);
    }

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

2024/04/27

  • 做出來了,找到規律就很簡單

189. Rotate Array - Medium
https://f88083.github.io/2023/12/19/189-Rotate-Array-Medium/
作者
Simon Lai
發布於
2023年12月19日
許可協議