Remove Duplicates from Sorted Array in Python


Suppose we have a sorted list A. We have to return the length of the array after removing all duplicate entries. We have to perform this in O(1) extra space. So we have to do the operation in-place.

For an example, suppose A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] Then the output will be 6, as there are six distinct elements.

To solve this, follow these steps −

  • If the list is empty, return 0
  • otherwise, initially take prev = first element of A. And define length = 0
  • for i := 1 to n-1, do
    • if A[i] is not the same as prev, then
      • length := length + 1
      • prev := A[i]
  • return length

Let us see the implementation to get a better understanding

Example (Python)

 Live Demo

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))

Input

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

Output

6

Updated on: 28-Apr-2020

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements