41. First Missing Positive

class Solution {
    public int firstMissingPositive(int[] nums) {
        if (nums == null || nums.length == 0) return 1;

        int p = 0;
        while (p < nums.length){
            if (nums[p] == p + 1 || nums[p] <= 0 || nums[p] > nums.length){
                p++;
            }
            else if (nums[nums[p] - 1] != nums[p]){
                swap(nums, p, nums[p] - 1);
            }
            else{
                p++;
            }
        }

        p = 0;
        while (p < nums.length && nums[p] == p + 1){
            p++;
        }

        return p + 1;
    }

    private void swap(int[] nums, int i, int j){
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

results for ""

    No results matching ""