Following examples.
- [1, 3, 6, 4, 1, 2, 7] then return 5
- [-1, 1, 2, 3] the return 4
- [−1, −3, -10] then return 1
- [−10000, 3] then return 1
Following the solution
public boolean isAllNegative(int[] Arr){ return Arr[Arr.length-1] < 0; } public boolean isFirtValueBiggerThenOne(int[] Arr){ return Arr[0] > 1; } public boolean isFirtPositiveBiggerThenOne(int[] Arr, int pos){ return Arr[pos-1] < 0 && Arr[pos] > 1; } public int algo(int[] Arr) { Arrays.sort(Arr); if (isAllNegative(Arr) || isFirtValueBiggerThenOne(Arr)){ return 1; } int value = Arr[Arr.length-1] +1; // max possible value for (int i=1; i < Arr.length; i++){ if( isFirtPositiveBiggerThenOne(Arr,i)) { return 1; } int previous = Arr[i-1]; int current = Arr[i]; if (previous > 0 && current != previous && current != (previous+1)){ value = previous+1; break; } } return value; }