53 lines
2.0 KiB
Java
53 lines
2.0 KiB
Java
|
/*
|
||
|
To find missing numbers in an array first we need to make sure that array is sorted.
|
||
|
After sorting we need to check that array each element with next element then we can find the difference.
|
||
|
if Array is not sorted :To sort array use Arrays.sort(array);
|
||
|
If difference is 1 then no need to do any thing because numbers are in order.
|
||
|
If difference is not equal to 1 then we need to print all those numbers or pick those numbers and place it in one array.
|
||
|
this would be the logic to find missing numbers in an array
|
||
|
Here there may be a chance of array not starts with 1 then we need to check first itself whether array starts with 1 or not if not we need to print 1 to starting element of array.
|
||
|
for example int a[]={4,5,6,8}; then we need to print 1 2 3 7.
|
||
|
*/
|
||
|
|
||
|
public class PrintMissingNumbers
|
||
|
{
|
||
|
|
||
|
private static void findMissingNumber(int[] number)
|
||
|
{
|
||
|
// take max length as last number in array
|
||
|
int k[] = new int[number[number.length-1]];
|
||
|
int m=0;
|
||
|
if(number[0]!=1)
|
||
|
{
|
||
|
for (int x = 1; x < number[0]; x++)
|
||
|
{
|
||
|
k[m] = x;
|
||
|
m++;
|
||
|
}
|
||
|
}
|
||
|
for (int i = 0; i < number.length -1; i++)
|
||
|
{
|
||
|
int j = i+1;
|
||
|
int difference = number[j] - number[i] ;
|
||
|
if(difference != 1 )
|
||
|
{
|
||
|
for (int x = 1; x < difference; x++)
|
||
|
{
|
||
|
k[m] = number[i] + x;
|
||
|
m++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
System.out.println("missing numbers in array ::");
|
||
|
for (int l = 0; l < m ; l++)
|
||
|
{
|
||
|
System.out.println( k[l]+" ");
|
||
|
}
|
||
|
}
|
||
|
public static void main(String[] args)
|
||
|
{
|
||
|
int a[]= {2,4,6,9,10,20};
|
||
|
//if Array is not sorted :To sort array use ArraysC.sort(a);
|
||
|
findMissingNumber(a);
|
||
|
}
|
||
|
}
|