qidao123.com技术社区-IT企服评测·应用市场
标题:
[Java][Leetcode simple] 189. 轮转数组
[打印本页]
作者:
玛卡巴卡的卡巴卡玛
时间:
7 天前
标题:
[Java][Leetcode simple] 189. 轮转数组
借助辅助数组
借助一个辅助数组tmp保存后面k个元素
然后逆序循环,使用数组前面n-k个元素覆盖最后到后面
最后把前k个元素从tmp中拿回来
复制代码
public void rotate(int[] nums, int k) {
int len = nums.length;
k = k % len;
int[] Ra = new int[len];
int cnt = 0;
for (int i = len-k ; i < len; i++) {
Ra[cnt++] = nums[i];
}
for (int i = len-1; i >=0 ; i--) {
if(i>=k){
nums[i] = nums[i-k];
}else{
nums[i] = Ra[i];
}
}
}
复制代码
借助数组旋转
先团体旋转
然后0~k-1旋转
最后k-n-1旋转,即可得到目标数组
public void rotate2(int[] nums, int k) {
int len = nums.length;
k = k % len;
reverse(nums, 0, len-1);
reverse(nums, 0, k-1);
reverse(nums, k, len-1);
}
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--;
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4