1public void rotate(int[] nums, int k) {
2 k = k % nums.length;
3
4 // Reverse entire array
5 reverse(nums, 0, nums.length - 1);
6
7 // Reverse first k elements
8 reverse(nums, 0, k - 1);
9
10 // Reverse remaining elements
11 reverse(nums, k, nums.length - 1);
12}
13
14private void reverse(int[] nums, int start, int end) {
15 while (start < end) {
16 int temp = nums[start];
17 nums[start] = nums[end];
18 nums[end] = temp;
19 start++;
20 end--;
21 }
22}