1.最初新建了一个数组,顺序对了之后想直接让原数组等于新数组,但是不可以,因为java的指针问题,回去看书。
2.将新数组一个一个assign给了原数组,时间虽然是n的 但是空间也是n。这个题时间只能是n 但是空间可以1
3.看了答案后,发现只要自己写一个reverse,整个数组reverse三次就可以了。
注意:k要先%length之后再用。要判断nums数组是否为空。
public class Solution {
public void rotate(int[] nums, int k) {
if ( k <= 0 || nums.length == 0 || nums == null )
return;
k = k%nums.length;
reverse(nums, 0, nums.length - 1 );
reverse(nums, 0, k - 1 );
reverse(nums, k, nums.length - 1 );
return;
}
public void reverse( int[] nums, int start, int end){
while (start < end){
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start ++;
end --;
}
}
}