LeetCode 41 First Missing Positive

Posted H东邪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 41 First Missing Positive相关的知识,希望对你有一定的参考价值。

题目描述

Given an unsorted integer array nums, find the smallest missing positive integer.
You must implement an algorithm that runs in O(n) time and uses constant extra space.

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1
输入:nums = [1,2,0]
输出:3

示例 2
输入:nums = [3,4,-1,1]
输出:2
示例 3:

示例 3:
输入:nums = [7,8,9,11,12]
输出:1

分析

待完成

Codes

class Solution {
    public int firstMissingPositive(int[] nums) {
        if (nums.length == 0) {
            return 1;
        }
        for (int i = 0; i < nums.length; i++) {
            // 这里一定是while不是if,如果是if的话会导致i上放的数与规则不一致
            // 例如:3, 4, -1, 1 => -1, 4, 3, 1 => 3, 1, -1, 4 如果是if那么下一次i=2,此时i=1位置上的值是错误的
            while (nums[i] > 0 && nums[i] <= nums.length && nums[nums[i] - 1] != nums[i]) {
                int temp = nums[nums[i] - 1];
                nums[nums[i] - 1] = nums[i];
                nums[i] = temp;
            }
        }
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != i + 1) {
                return i + 1;
            }
        }
        return nums.length + 1;
    }
}

以上是关于LeetCode 41 First Missing Positive的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode OJ 41First Missing Positive

leetcode:41. First Missing Positive (Java)

[leetcode-41-First Missing Positive]

Leetcode 41: First Missing Positive

LeetCode41 First Missing Positive

leetcode 41. First Missing Positive