Question:- We are given a list of n-1 integers and these integers are in the range of 1 to n. There are no duplicates in list. One of the integers is missing. Give an algorithm to find the missing integer.
Input:- 1, 2, 4, 6, 3, 7, 8
Output:- 5
Brute Force Solution:- One simple solution to this is, for each number in 1 to n check whether that number is in the given array or not. Return the number that is not present.
Here is the code module for the same:-
#include //find missing number in array of size int findMissingNumber(int arr[], int size) { int i,j,found = 0; //loop through integers 1 to n for(i = 1; i<=size; i++) { //consider the number not to be present found = 0; //check in array for(j=0; j<size; j++) if(arr[j] == i) //if present change the flag found = 1; //if the number was not found, it was missing if(found == 0) return i; } } //driver program to test above function int main(void) { int arr[7] = {1, 2, 4, 6, 3, 7, 8}; printf("The missing number is = ",findMissingNumber(arr,7)); return 0; }
Time Complexity:- O(n2)
Space Complexity:- O(1)
Method 2 – Sorting the array.
Method 3 – Using array summation.
Method 4 – Using XOR operator.
2 comments
In second loop, If condition should be :
if(arr[j] == i)
Hi Ankur,
Thanks for pointing it out. Have corrected the typo.
Comments are closed.