思路简介:
考虑到数组时排序的,我们设置两个指针start和cur,
其中start指向上一个能确定的不重复数字
cur指向当前考察的数字
它们在一开始分别指向前两个元素
若所指的两个元素不等,
我们将start指向cur,cur指向cur+1
若所指的元素相等,我们将cur记录到一个数组Indexlist中
然后将cur后移而start不变
最后,我们将indexlist反转后,从反转过后的第一个元素开始pop删除对应重复数字
最后输出长度即可
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
length = len(nums)
start = 0
cur = 1
suma = 1
indexlist = []
while cur < length:
if nums[start] != nums[cur]:
start = cur
cur += 1
suma += 1
elif nums[start] == nums[cur]:
indexlist.append(cur)
cur += 1
indexlist = indexlist[::-1]
for pos in indexlist:
nums.pop(pos)
return suma