刪除排序陣列中的重複元素(三種方法的比較)

2021-07-23 10:31:48 字數 979 閱讀 2500

給定乙個排序陣列,在原陣列中刪除重複出現的數字,使得每個元素只出現一次,並且返回新的陣列的長度。

不要使用額外的陣列空間,必須在原地沒有額外空間的條件下完成。

時間複雜度和空間複雜度都為o(n)

arraylistlist = new arraylist();

// 去掉陣列中重複的元素

public

int removetheagain01(int array) else

if (array.length == 1) else else

}list.add(array[i]);

i = j;}}

for (int k = 0; k < list.size(); k++)

return

list.size();

}}

時間複雜度為o(n^2),空間複雜度為o(n)

public

int removetheagain02(int array) else

if (array.length == 1) else

}system.arraycopy(array, j, array, i + 1, end - j + 1);

end -= j - i - 1;}}

return end + 1;

}}

時間複雜度o(n),空間複雜度o(1)

public

int removetheagain03(int array) else

if (array.length == 1) else else

}return len;

}}

陣列下標(指標)與臨時變數,是解決陣列相關面試題的兩**寶**

已排序陣列刪除重複元素

刪除排序陣列中的重複項 思路可以轉變為 前提陣列有序 可以理解為相鄰元素間要不相同,要不不同 要求刪除重複元素,實際上就是將不重複的元素移到陣列的左側。假如乙個有序陣列為 1,1,1,2,2,3,4,5 使用雙指標法 快慢指標 分別為p和q 在迴圈遍歷過程中,第一輪可以將陣列表示為 p在1的位置上q...

leetcode 刪除排序陣列重複元素

題目 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地 修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 num...

刪除排序陣列中重複元素的方法

可以檢視leetcode上的26題 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,...