Program to find all missing numbers from 1 to N in Python

PythonServer Side ProgrammingProgramming

Suppose we have a list of numbers called nums of size n where all numbers in the list are present in the interval [1, n] some elements may appear twice while others only once. We have to find all of the numbers from [1, n] such that they are not in the list. We have to return the numbers sorted in ascending order. We have to try to find a solution that takes linear time and constant space.

So, if the input is like [4, 4, 2, 2, 6, 6], then the output will be [1, 3, 5].

To solve this, we will follow these steps −

  • arr := an array of size nums + 1, and fill with 0
  • for each i in nums, do
    • arr[i] := arr[i] + 1
  • missing := a new list
  • for i in range 0 to size of arr, do
    • if arr[i] is same as 0 and i is not same as 0, then
      • insert i at the end of missing
  • return missing

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, nums):
      arr = [0]*(len(nums)+1)
      for i in nums:
         arr[i] += 1
      missing = []
      for i in range(len(arr)):
         if arr[i] == 0 and i != 0:
            missing.append(i)
      return missing
ob = Solution()
print(ob.solve([4, 4, 2, 2, 6, 6]))

Input

[4, 4, 2, 2, 6, 6]

Output

[1, 3, 5]
raja
Published on 06-Oct-2020 10:05:37
Advertisements