# [189\. Rotate Array](https://leetcode.com/problems/rotate-array/) :::spoiler Solution - Use Build-in Reverse() Function ```cpp= class Solution { public: void rotate(vector<int>& nums, int k) { reverse(nums.begin(), nums.end()); k %= nums.size(); reverse(nums.begin(), nums.begin() + k); reverse(nums.begin() + k, nums.end()); } }; ``` - T: $O(N)$ - S: $O(1)$ ::: :::spoiler Solution - Two Pointers ```cpp= class Solution { public: void rotate(vector<int>& nums, int k) { int left = 0, right = nums.size() - 1; reverseArray(nums, left, right); k %= nums.size(); left = 0, right = k - 1; reverseArray(nums, left, right); left = k, right = nums.size() - 1; reverseArray(nums, left, right); } void reverseArray(vector<int>& nums, int left, int right) { while (left < right) { swap(nums[left], nums[right]); ++left; --right; } } }; ``` - T: $O(N)$ - S: $O(1)$ :::