问题描述
问题解析
根据题目描述:原列表是有序的。只能使用已知数量的空间,不得创建额外列表。使用两个index p和q,p用来指示为重复元素,q用来指示和p位置处相等的元素,直到q处元素不和p处相等p = p + 1
由于p为列表中不重复元素,则列表长度应为p+1
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
p = 0
q = 1
while q < len(nums):
if nums[p] == nums[q]:
q = q + 1
else:
p = p + 1
nums[p] = nums[q]
q = q + 1
return p + 1