本文共 901 字,大约阅读时间需要 3 分钟。
给定一个已排序的数组nums
,目标是在原地删除重复元素,使得每个元素最多出现两次,同时返回修改后的数组长度。
count
来跟踪当前元素的出现次数。初始值为1。i=1
和count=1
。nums[i]
等于nums[i-1]
,计数器加一。如果计数器超过2,删除nums[i]
,并减一索引。class Solution: def removeDuplicates(self, nums: list[int]) -> int: i, count = 1, 1 while i < len(nums): if nums[i] == nums[i-1]: count += 1 if count > 2: nums.pop(i) i -= 1 else: count = 1 i += 1 return len(nums)
通过在原地遍历数组并使用计数器来控制每个元素的出现次数,确保数组满足每个元素最多两次的条件。这种方法在时间复杂度上为O(n),空间复杂度为O(1),符合题目要求,且实现简洁高效。
转载地址:http://idagz.baihongyu.com/