标签:双指针 moved color img mic ret ica for 重复
双指针
思路:
双指针覆盖多余重复项,一个指针i负责遍历,一个指针j负责要覆盖的重复项位置。
用count记录重复项的个数,则不用覆盖的情况是nums[i]==nums[j]并且count>2,那么需要覆盖的情况就是nums[i] != nums[j] 或者 count<=2,这里我们可以在nums[i]!=nums[j]时,将count置为1,在count<=2时, 将nums[j]覆盖即可。
代码:
class Solution: def removeDuplicates(self, nums: List[int]) -> int: j, count = 1, 1 for i in range(1, len(nums)): if nums[i] == nums[i - 1]: count += 1 else: count = 1 if count <= 2: nums[j] = nums[i] j += 1 return j
代码:(另一种方式)
class Solution: def removeDuplicates(self, nums: List[int]) -> int: i = 0 for e in nums: if i < 2 or e != nums[i - 2]: nums[i] = e i += 1 return i
leetcode 每日一题 80. 删除排序数组中的重复项 II
标签:双指针 moved color img mic ret ica for 重复
原文地址:https://www.cnblogs.com/nilhxzcode/p/13124592.html