← Back to Leo Academy Masterclass

Problem #189: Rotate Array

Medium Array & String

Intuition & Strategy Breakdown

Reverse the whole array, then reverse the first k elements, and finally reverse the remaining n - k elements in-place.

Python Solution

class Solution:
    def rotate(self, nums: list[int], k: int) -> None:
        k = k % len(nums)
        def reverse(l, r):
            while l < r:
                nums[l], nums[r] = nums[r], nums[l]
                l, r = l + 1, r - 1
        reverse(0, len(nums) - 1)
        reverse(0, k - 1)
        reverse(k, len(nums) - 1)

Java Solution

class Solution {
    public void rotate(int[] nums, int k) {
        k %= nums.length;
        reverse(nums, 0, nums.length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.length - 1);
    }
    private void reverse(int[] nums, int l, int r) {
        while (l < r) {
            int temp = nums[l];
            nums[l++] = nums[r];
            nums[r--] = temp;
        }
    }
}
Watch Interactive Video on Leo Academy Main App