在Python中从排序数组中删除重复项

假设我们有一个排序列表A。我们必须在删除所有重复条目后返回数组的长度。我们必须在O(1)的额外空间中执行此操作。因此,我们必须就地进行操作。

例如,假设A = [1、2、2、2、2、3、3、3、3、4、5、5、5、5、6]然后输出将是6,因为有六个不同的元素。

为了解决这个问题,请遵循以下步骤-

  • 如果列表为空,则返回0

  • 否则,首先获取prev = A的第一个元素。并定义length = 0

  • 对于i:= 1到n-1,做

    • 长度:=长度+ 1

    • 上一个:= A [i]

    • 如果A [i]与上一个不同,则

    • 返回长度

    让我们看一下实现以获得更好的理解

    范例(Python)

    class Solution(object):
       def removeDuplicates(self, nums):
          """
          :type nums: List[int]
          :rtype: int
          """
          if len(nums) == 0:
             return 0
          length = 1
          previous = nums[0]
          index = 1
          for i in range(1,len(nums)):
             if nums[i] != previous:
                length += 1
                previous = nums[i]
                nums[index] = nums[i]
                index+=1
          return length
    input_list = [1,1,2,2,2,3,3,3,3,4,5,5,5,6]
    ob1 = Solution()print(ob1.removeDuplicates(input_list))

    输入值

    [1,1,2,2,2,3,3,3,3,4,5,5,5,6]

    输出结果

    6