189. Rotate Array
一、题目
1、审题
2、分析
给出一个整形数组,将每一个元素向右边移动 k 个元素。
二、解答
1、思路:
①、将数组整体翻转一遍;
②、将数组从 (0,K-1)翻转一遍; 则前 K 个元素已经符合;
③、将数组从(K,end)翻转一遍;则后边 end - K 个元素已经符合;
public void rotate(int[] nums, int k) { 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 start, int end) { while(start < end) { int tmp = nums[start]; nums[start] = nums[end]; nums[end] = tmp; start++; end--; } }