Skip to content

删除排序数组中的重复项

26

python3 解决方式 之 双指针

python
def removeDuplicates(nums):
    if len(nums) == 0:
        return 0
    slow = 0
    for fast in range(1, len(nums)):
        if nums[slow] != nums[fast]:
            slow += 1
            nums[slow] = nums[fast]
    return slow + 1

复杂度

时间复杂度:O(n)
空间复杂度:O(1)

80

python3 解决方式 之 计数

python
def removeDuplicates(nums):
    if len(nums) == 0:
        return 0
    slow = 0
    count = 1
    for fast in range(1, len(nums)):
        if nums[fast] == nums[slow]:
            count += 1
        else:
            count = 1
        if count <= 2:
            slow += 1
            nums[slow] = nums[fast]
    return slow + 1

python3 解决方式 之 双指针

python
def removeDuplicates2(nums):
    n = len(nums)
    if n <= 2:
        return n
    slow = 2
    fast = 2
    while fast < n:
        if nums[slow - 2] != nums[fast]:
            nums[slow] = nums[fast]
            slow += 1
        fast += 1
    return slow