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;
}

results matching ""

    No results matching ""