如何使用Java中的遞歸從數組中刪除?如何使用Java中的遞歸從數組中刪除
該數組可以在任何長度和任何整數。
你可能不使用循環(同時,對等)
例如
[2][4][2][0][9]
應打印(2 4 0 9)
感謝您的幫助
如何使用Java中的遞歸從數組中刪除?如何使用Java中的遞歸從數組中刪除
該數組可以在任何長度和任何整數。
你可能不使用循環(同時,對等)
例如
[2][4][2][0][9]
應打印(2 4 0 9)
感謝您的幫助
你不能從Java中的數組中刪除元素。不適用於遞歸,不適用於循環。
我假設在這裏你實際上並不想刪除元素[如@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();
}
排序的數組,然後使用遞歸如果是一樣的,表示前一個唯一元素的元素以前發現的元素/參數刪除元素。
正如其他人所說,你不能從原始數組中刪除元素,你需要將應該保留的元素複製到一個新的數組中。
「...你需要將應該保留的元素複製到一個新數組中」 - 但是這個數組有什麼維度? – obfuscation
您可以初始化新數組的大小與原始數組的大小相同,並使用某個特殊元素來指示其結束,也可以使用該函數的第一次調用來計算唯一元素,然後分配一個具有該大小的新數組,然後存儲唯一元素到第二次調用中的新數組。 –
到目前爲止您嘗試過什麼? (這看起來像功課,如果是這樣,請標記爲這樣) – Mat
什麼元素應該被刪除?隨機的?你必須更加明確。 –
什麼是要刪除?重複?請改進問題。如果是的話,你也許會說colour也是作業。 –