# 189. Rotate Array

• Time: $O(n)$
• Space: $O(1)$
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public: void rotate(vector& nums, int k) { k %= nums.size(); reverse(nums, 0, nums.size() - 1); reverse(nums, 0, k - 1); reverse(nums, k, nums.size() - 1); } private: void reverse(vector& nums, int l, int r) { while (l < r) swap(nums[l++], nums[r--]); } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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) swap(nums, l++, r--); } private void swap(int[] nums, int l, int r) { final int temp = nums[l]; nums[l] = nums[r]; nums[r] = temp; } } 
  1 2 3 4 5 6 7 8 9 10 11 12 class Solution: def rotate(self, nums: List[int], k: int) -> None: k %= len(nums) self.reverse(nums, 0, len(nums) - 1) self.reverse(nums, 0, k - 1) self.reverse(nums, k, len(nums) - 1) def reverse(self, nums: List[int], l: int, r: int) -> None: while l < r: nums[l], nums[r] = nums[r], nums[l] l += 1 r -= 1