我必須編寫一個方法,它接受一個已經按數字順序排序的int數組,然後刪除所有重複數字並返回一個沒有重複數字的數組。該數組必須被打印出來,所以我不能有任何空指針異常。該方法必須在O(n)時間內,不能使用向量或散列。這是我迄今爲止的,但它只有第一對夫婦的數字順序沒有重複,然後把重複放在數組的後面。我不能創建一個臨時數組,因爲它給了我空指針異常。在排序的java數組中重複
public static int[] noDups(int[] myArray) {
int j = 0;
for (int i = 1; i < myArray.length; i++) {
if (myArray[i] != myArray[j]) {
j++;
myArray[j] = myArray[i];
}
}
return myArray;
}
你不能說服兩種操作,排序和刪除重複?我認爲這是更好的解決方案。 – 4gus71n
@astinx - 好的,他正在對陣列進行預先排序,所以不需要組合操作。請注意,大多數「良好」排序都被認爲是在O(n log n)時間內運行,這超過了O(n)時間,所以這對他無能爲力。請注意,雖然組合的搜索/刪除操作可能會更快,但這會干擾_composability_,可以從較小的函數中創建較大的函數(即正常課程具有排序功能,排序 - 重複功能,並結合這些)。 –
你能讀我的回答嗎?我編輯t將解決您的問題。此外,請嘗試評論答案並提供反饋。 –