1. 程式人生 > >[Leetcode26] 刪除排序陣列中的重複項

[Leetcode26] 刪除排序陣列中的重複項

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 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();
    }
};