[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();
    }
};

猜你喜欢

转载自blog.csdn.net/qq_40501689/article/details/82924139