问题描述
问题解析
根据题目描述:原列表是有序的。只能使用已知数量的空间,不得创建额外列表。使用两个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
执行结果与消耗

本文介绍了一种在保持空间复杂度为O(1)的情况下,去除有序列表中重复元素的算法实现。通过使用双指针p和q,遍历列表,当q指向的元素与p相等时,q向后移动;反之则将q指向的元素赋值给p+1的位置,并同时移动p和q,直至遍历完整个列表。最终返回p+1作为新的列表长度。

5385

被折叠的 条评论
为什么被折叠?



