【发布时间】:2020-06-04 09:26:22
【问题描述】:
我有一个数组:
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
我想将数组从指定范围旋转k 次,即从第 5 个元素到最后一个元素:
output: {1, 2, 3, 4, 9, 8, 5, 6, 7}
我试图调整算法以从数组的开始旋转到结束
public static int[] rotate(int[] nums, int k) {
int[] a = new int[nums.length];
for (int i = 4; i < nums.length; i++) {
a[(i + k) % nums.length] = nums[i];
}
for (int i = 4; i < nums.length; i++) {
nums[i] = a[i + 4];
}
return nums;
}
但是,输出是:1 2 3 4 0 0 5 6 7
除了将目标元素从原始数组复制到临时数组然后运行该算法之外,我做错了什么?为什么返回的是0, 0 而不是9, 8?
【问题讨论】:
标签: java arrays rotation array-algorithms