# [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)$
:::