leetcode hot 16

解题思路:最简单的方法就是浪费空间的方法。还有一种巧法,先将整个数组反转,然后将需要移动的后面的k(如果超过数组长度就取余)个位置的数反转,最后将剩下的数反转。
class Solution {
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);
}
public void reverse(int[] nums,int start,int end){
while(start<end){
int tmp = nums[start];
nums[start]=nums[end];
nums[end]=tmp;
start++;
end--;
}
return;
}
}

浙公网安备 33010602011771号