给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
分析:一开始想的方向错了,想成两个元素的交换,其实数组整体向右移动,简单来说,高位被低位代替,一开始想着用for循环,从小到大循环,发现不通,必须从大到小,数据才不会被覆盖。
public static void rotate(int[] nums ,int k){
while(k>0){
//记录最高位数据
int high = nums[nums.length-1];
for(int i=nums.length-2;i>=0;i--){
nums[i+1]=nums[i];
}
nums[0]=high;
k--;
}
}