删除有序数组的重复项 两种解法(Python)

删除有序数组的重复项 两种解法(Python),第1张

LeetCode链接

双指针 时间复杂度O(N)
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        j = 0
        for i in range(len(nums)):
            if nums[i] != nums[j]:
                j += 1
                nums[j] = nums[i]
        return j + 1
通用解法 最多保留k个相同数值 时间复杂度O(N)
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        return self.removeDuplicatesK(nums, 1)
        
    def removeDuplicatesK(self, nums: List[int], k) -> int:
        i = 0
        for n in nums:
            # 前k个元素直接放行
            # 之后的元素是否可以插入 需要和 i - k 位置的元素进行比较 不同才能插入
            if i < k or nums[i - k] != n:
                nums[i] = n
                i += 1
        return i

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/868840.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存