刪除排序陣列中的重複項

2021-10-04 06:17:03 字數 698 閱讀 9154

1、原地刪除重複陣列元素,首先要找到重複元素,然後將後面的元素前移

class solution 

//找到重複元素

int pre = nums[0];

int length = nums.length;

int cur = 0;

for(int i = 1;i< length;i++)

length--;

//因為i個元素刪除,其餘元素前移,第i個元素因為下乙個元素

i--;

} else

}return length;

}}

因為陣列的長度一旦定義了就無法縮小,所以我們通過length來表示陣列的長度,即使後面還有單元,我也不遍歷了。

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

class solution 

}return i + 1;

}}

一看時間複雜度o(n),空間複雜度o(1),不用說就比我優秀了。

其實我的**裡面每次移除元素時,後面元素都移動上來是多餘的。只要定義兩個陣列,把不重複的元素依次放入新陣列就行了。什麼?不能建立新陣列?好,那我就在本陣列中建立新陣列。i記為陣列a,j記為陣列b,如果陣列b中元素重複,就把元素放入陣列a,然後i++。最後元素的個數就是i+1個。在同乙個陣列中我們實現了兩個陣列的效果。

刪除排序陣列中的重複項

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

刪除排序陣列中的重複項

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

刪除排序陣列中的重複項

給定陣列 nums 1,1,2,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不需要考慮陣列中超出新長度後面的元素。給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 nums 的前五個元素被修改為 0,1,2,3,4。...