最后更新于6年前
提示很明显了,答案只检测前k(去重后的元素个数)个位置,因此可以设两个指针i,j。i表示nums[0:i]是无重复部分,初始为0。j从1开始遍历数组,遇到与i不相等的元素就令i+1,并将该元素写入i(无重复部分的末尾)
nums[0:i]
class Solution: def removeDuplicates(self, nums: List[int]) -> int: n = len(nums) if n == 0: #边界条件 return 0 i = 0 #无重复部分 j = 1 #游标 for j in range(1, n): if nums[j] != nums[i]: i += 1 #无重复部分扩张 nums[i] = nums[j] return i+1