[Leetcode26] 刪除排序陣列中的重複項
阿新 • • 發佈:2018-12-13
給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。
這是目前程式碼寫的最快的一次,遍歷比較,用pop,erase去刪除重複元素,不過時間上開銷很大。
python:
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ i = 0 if len(nums) <= 1: return len(nums) while i < (len(nums)-1): if nums[i] == nums[i+1]: nums.pop(i) else: i += 1 return len(nums)
C++:
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size() <= 1) return nums.size(); int i = 0; while(i < nums.size()-1){ if(nums[i] == nums[i+1]) nums.erase(nums.begin() + i); else i += 1; } return nums.size(); } };