【发布时间】:2022-01-05 04:17:13
【问题描述】:
我知道有一些解决方案可以移动阵列。但是没有解决方案适合我。代码应实现如下:
shift(int[] array, int places) 方法接收 array,将元素 places 向右移动 次并将“剩余”元素替换为“0”。
到目前为止我有:
public static int[] shiftWithDrop(int[] array, int places) {
if (places == 0 || array == null) {
return null;
}
for (int i = array.length-places-1; i >= 0; i-- ) {
array[i+places] = array[i];
array[i] = 0;
}
return array;
}
此代码只能以某种方式工作,但不会返回所需的结果。我错过了什么?
【问题讨论】:
-
当
places为0时,为什么你返回null?这是非常不直观的行为 -
而且您确实需要展示它没有返回所需结果的情况,另请参阅minimal reproducible example
-
不要修改输入数组,而是创建一个局部变量并使用它来移动值并返回