import java.util.Arrays;
class Solution {
public void rotate(int[] nums, int k) {
//向右挪动k个位置,先挪动后面的要插入到前面的元素,再挪动前面的
/**
* 先把会覆盖的后面K个元素存起来
*/
int L0 =nums.length ;
k = k % L0;//考虑边界问题把超出长度的循环次数去掉
int[] nums1 = new int[k];
int m = L0;
for(int i = 0;i < k;i++) {
nums1[i] = nums[L0 - k + i];//1.存会被覆盖的那几位
}
for(int i = 0;i < L0 - k;i++) {
nums[m-1] = nums[m-1-k];//2.移动L0-k位
m--;
}
for(int i = 0;i < k;i++) {//3.把保存的前几位存进去
nums[i] = nums1[i];
}
//System.out.println(Arrays.toString(nums));
}
}
Java向右移动数组
最新推荐文章于 2024-05-28 19:10:41 发布