Tech for good

[Leetcode/TwoPointer] 189. Rotate Array 본문

IT/Computer Science

[Leetcode/TwoPointer] 189. Rotate Array

Diana Kang 2025. 2. 18. 00:41

 

 

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        n = len(nums)
        k = k % n  # In case k is larger than n
        
        # Step 1: Reverse the entire array
        nums.reverse()
        
        # Step 2: Reverse the first k elements
        nums[:k] = reversed(nums[:k])
        
        # Step 3: Reverse the remaining n-k elements
        nums[k:] = reversed(nums[k:])

 

Explanation

For nums = [1,2,3,4,5,6,7] and k = 3:

  1. Reverse entire array: [7,6,5,4,3,2,1]
  2. Reverse first k elements (k=3): [5,6,7,4,3,2,1]
  3. Reverse remaining part: [5,6,7,1,2,3,4]

Time Complexity: O(n)
Space Complexity: O(1) (modifies the array in-place)


  • In case of (n = k), nums = output
    • However,  in case of k >= n,  k = spare of (k % n)