leetcode 每日一题 80. 删除排序数组中的重复项 II
Posted nil_f
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 每日一题 80. 删除排序数组中的重复项 II相关的知识,希望对你有一定的参考价值。
双指针
思路:
双指针覆盖多余重复项,一个指针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的主要内容,如果未能解决你的问题,请参考以下文章
《LeetCode之每日一题》:288.删除排序链表中的重复元素
《LeetCode之每日一题》:288.删除排序链表中的重复元素
《LeetCode之每日一题》:98.删除排序链表中的重复元素