public static void remove (int[] arr, int toRemove)
“它应该从数组中删除 toRemove 值。剩下的元素应该移向数组的开头。(数组的大小不会改变)。由于数组现在使用的元素少了一个,原始的最后一个元素应该只用 0 替换。如果数组中有多个 toRemove 出现,则只应删除第一个出现。如果数组没有元素,它应该没有任何影响”。
到目前为止,我有这个:
public static void remove(int[] arr, int toRemove) {
for(int i = 0; i <= arr.length - 1; i++) {
if(arr[i] == toRemove) {
arr[i] = arr[i + 1];
arr[toRemove] = 0;
}
}
}
我有一个带有内容的数组的 main 方法:[3, 5, 7, 8, 12, 2]
和一个电话说remove(array, 5)
. 但是,我的数组打印出来[3, 7, 7, 8, 12, 0]
,什么时候应该打印出来[3, 7, 8, 12, 2, 0]
。
有人可以让我知道我有什么问题并解释一下吗?
这是一种方法,类似于我在上面的评论中描述的方法。
import java.util.Arrays;
public class main
{
// tip: arguments are passed via the field below this editor
public static void main(String[] args)
{
int[] arr = {3, 5, 7, 8, 5, 12, 2};
remove(arr, 5);
System.out.println(Arrays.toString(arr)); // [3, 7, 8, 5, 12, 2, 0]
}
public static void remove(int[] arr, int toRemove) {
int idx = -1;
// determine first occurrence of toRemove
for(int i = 0; i < arr.length; i++) {
if(arr[i] == toRemove) {
idx = i;
break;
}
}
// if not found, return
if(idx == -1) return;
// shift other elements down
for(int i = idx; i < arr.length-1; i++) {
arr[i] = arr[i+1];
}
// set last element to 0
arr[arr.length-1] = 0;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句