如何使用Java中的递归从数组中删除?
数组可以是任意长度和任何整数。
你可能不会使用循环(而对于等等)
例如
[2][4][2][0][9]
应打印(2 4 0 9)
感谢您的协助
答案 0 :(得分:4)
您不能在Java中从数组中删除元素。不是递归,不是循环。
答案 1 :(得分:2)
我假设你实际上并不想删除元素[正如@aioobe所提到的,它无法完成],但你实际上想:“打印数组中的所有元素,没有重复“。 [我从例子中假设它,你提到你想打印指定的输出]。
执行此操作的方法是维护一个包含您已遇到的所有元素的Set,并且当且仅当您遇到它并且它不在集合中时才打印元素。
递归部分可能是:始终处理i元素(arr[i]
),并在何时停止
i == arr.length
。不要忘记在每次递归调用中增加i。
看起来应该是这样的:
public static void printNoDupes(int[] arr,int i,Set<Integer> seen) {
if (i == arr.length) return;
if (!seen.contains(arr[i])) {
System.out.print(arr[i] + " ");
seen.add(arr[i]);
}
printNoDupes(arr,i+1,seen);
}
public static void printNoDupes(int[] arr) {
printNoDupes(arr,0,new HashSet<Integer>());
System.out.println();
}
答案 2 :(得分:1)
对数组进行排序,然后使用递归删除元素,如果它与先前找到的元素/参数相同,则表示前一个唯一元素。
正如其他人所说,你不能从原始数组中删除元素,你需要将应该保留的元素复制到一个新数组。