80. 删除有序数组中的重复项 II

80. 删除有序数组中的重复项 II
---
这边先做一道类似的题目
26.删除有序数组的重复项
相当于允许存在0个重复
目的计算不重复的个数,将不重复覆盖前方返回left+1
class Solution:
    def removeDuplicates(self,nums:List[int])->int:
        left = 0
        for right in range(len(nums)):
            if nums[right]==nums[left]:
                continue
            left+=1
            nums[left]=nums[right]
        return left+=1
---
而本体相当于允许存在2个重复
-<第一想法使用双指针,
代码:
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if len(nums)==0:
            return 
        left = 1#可以重复俩次,left从1开始,right从2开始
        for right in range(2,len(nums)):
            #比较前一和前一一个
            if nums[right]==nums[left] and nums[right]==nums[left-1]:
                continue
            left+=1
            nums[left]=nums[right]
        return left+1
---
衍生到第K个
class Solution:
    def removeDuplicates(self, nums: List[int], K: int) -> int:
        left = K-1
        for right in range(K,len(nums)):
            tag = True
            for i in range(K):
                tag*=nums[right]==nums[left-1]
            #nums[right]==nums[left-i] return Ture否则返回False
            #tag再和之前做×运算
            if tag:
                continue
            left+=1
            nums[left]==nums[right]
        return left

 

 
posted @ 2022-08-30 14:17  是冰美式诶  阅读(24)  评论(0)    收藏  举报