Case 1: Sorted
Use two pointers to store previous and current value, and difference between two number should equal to 1.
public static int findMissing_Sorted(int[] input){
if(input.length == 0)
return 0;
int prev = input[0];
for(int i = 1 ; i < input.length ; i++){
int curr = input[i];
if((curr - prev) != 1)
return (prev + 1);
else
prev = curr;
}
return 0;
}
Case 2: Unsorted
Get the sum of 1 to N, use formula sum = (N+1)*(N)/2
Minus the element in the array, and the remaining value is the missing number.
public static int findMissing_Unsorted(int[] input){
if(input.length == 0)
return 0;
int N = 10;
int max = (N + 1) * N / 2;
for(int i = 0 ; i < input.length ; i++)
max -= input[i];
return max;
}
No comments:
Post a Comment