Missing first Integer
O(n) space solution:
public int firstMissingPositive(int[] nums) {
if (nums == null || nums.length == 0) {
return 1;
}
Set<Integer> set = new TreeSet<>();
for (int i=0; i<nums.length; i++) {
if (nums[i] > 0) {
set.add(nums[i]);
}
}
List<Integer> list = new ArrayList<Integer>(set);
if (list.size() == 0)
return 1;
if (list.get(0) != 1)
return 1;
for (int i=1; i<list.size(); i++) {
if (list.get(i) - list.get(i-1) != 1)
return list.get(i-1) + 1;
}
return list.get(list.size()-1)+1;
}