题目:给定一个数组,将数组中的元素向右移动 k
个位置,其中 k
是非负数。
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解答:需要注意的是,k = k % num.length,这样避免k大于数组长度而出现的溢出情况。
1 class Solution { 2 public void rotate(int[] nums, int k) { 3 k = k % nums.length; 4 reverse(nums, 0, nums.length - 1); 5 reverse(nums, 0, k - 1); 6 reverse(nums, k, nums.length - 1); 7 } 8 public void reverse(int[] nums, int left, int right){ 9 while(left < right){ 10 int temp = nums[left]; 11 nums[left] = nums[right]; 12 nums[right] = temp; 13 left = left + 1; 14 right = right - 1; 15 } 16 } 17 }