给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 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();
}
};