
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find All Missing Numbers from 1 to N in Python
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
- if arr[i] is same as 0 and i is not same as 0, then
- return missing
Let us see the following implementation to get better understanding −
Example
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]
Advertisements