Problem : Given an unsorted array of size n. Array elements are in range from 1 to n.One number from set {1, 2, …n} is missing and one number occurs twice in array. Find these two numbers.
Approach to solve (Algorithm)
2. Run a loop from index 0 to length-1;
2. Find the difference between element at i & i+1 index.
if difference==-1 continue the loop;
else
if(difference==0) //So the Number at i index is repeated
else
if(difference==-2)//So the Number at index[i]+1 is missing.
Solution:
/** * Created by DieHardTechy on 22-12-2014. */ import java.util.Arrays; public class ArrayMissingDuplicate { public static void main(String[] arg) { //Unsorted Array which contains a duplicate number and a missing number int unsortedArr[] = {9, 8, 6, 6, 7, 4, 3, 1, 2}; findMissingDuplicate(unsortedArr); } public static void findMissingDuplicate(int[] inputArr) { Arrays.sort(inputArr); //Sorts the input array in ascending order for (int i = 0; i < inputArr.length - 1; i++) { if (inputArr[i] - inputArr[i + 1] == -1) { continue; } else if (inputArr[i] - inputArr[i + 1] == 0) { System.out.println("Duplicate number is " + inputArr[i]); } else if (inputArr[i] - inputArr[i + 1] == -2) { System.out.println("Missing number is " + (inputArr[i] + 1)); } } } }
No comments:
Post a Comment