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。...