• Time:O(n)
• Space:O(1)

## C++

``````class Solution {
public:
void rotate(vector<int>& 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<int>& nums, int l, int r) {
while (l < r)
swap(nums[l++], nums[r--]);
}
};
``````

## JAVA

``````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;
}
}
``````

## Python

``````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
``````