所以,如果步长为1,则我希望得到以下数组:
代码运行良好,但是是否有可能在不创建帮助数组的情况下实现这一点(即上面代码中的array2)?
谢谢!
{1, 2, 3, 4}
变成:
{4, 1, 2, 3}
当步长为2时,结果如下:
{3, 4, 1, 2}
这是我现在使用的代码:
private static int[] shiftArray(int[] array, int stepSize) {
if (stepSize == 0)
return array;
int shiftStep = (stepSize > array.length ? stepSize % array.length : stepSize);
int[] array2 = new int[array.length];
boolean safe = false;
for (int i = 0; i < array.length; i++) {
if (safe) {
array2[i] = array[i - shiftStep];
}
else {
array2[i] = array[array.length - shiftStep + i];
safe = (i+1) - shiftStep >= 0;
}
}
return array2;
}
代码运行良好,但是是否有可能在不创建帮助数组的情况下实现这一点(即上面代码中的array2)?
谢谢!