class Solution { public void reverse(int[] nums, int i, int j) { while(i<=j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; i++; j--; } } public void rotate(int[] nums, int k) { int n = nums.length; k = k%n; // rotate first whole array reverse(nums,0,n-1); // [7,6,5,4,3,2,1] // rotate first k elements reverse(nums,0,k-1); // [5,6,7,4,3,2,1] // rotate from kth element to last reverse(nums,k,n-1); // [5,6,7,1,2,3,4] } }