`

First Missing Positive

阅读更多
Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

用到了桶排序,我们让第i个位置放值为i + 1的元素。当nums[i]不等于i + 1时,就让nums[nums[i] - 1]] = nums[i], 这样nums[nums[i] - 1]的位置肯定符合nums[i] = i + 1。然后在遍历一遍数组,如果遇到nums[i] 不等于 i + 1时就返回i+ 1,这个数字就是第一个missing的正数。代码如下:
public class Solution {
    public int firstMissingPositive(int[] nums) {
        if(nums == null) return 0;
        for(int i = 0; i < nums.length; i++) {
            while(nums[i] - 1 != i) {
                if(nums[i] <= 0 || nums[i] >= nums.length || nums[nums[i] - 1] == nums[i]) break;
                int tem = nums[nums[i] - 1];
                nums[nums[i] - 1] = nums[i];
                nums[i] = tem;
            }
        }
        for(int i = 0; i < nums.length; i++) {
            if(nums[i] != i + 1) return i + 1;
        }
        return nums.length + 1;
    }
}
分享到:
评论

相关推荐

    java-leetcode题解之First Missing Positive.java

    java java_leetcode题解之First Missing Positive.java

    js-leetcode题解之41-first-missing-positive.js

    js js_leetcode题解之41-first-missing-positive.js

    C语言-leetcode题解之41-first-missing-positive.c

    c语言入门 C语言_leetcode题解之41-first-missing-positive.c

    c++-c++编程基础之leetcode题解第41题缺失的第一个正数.zip

    本资源包聚焦于LeetCode的第41题——"缺失的第一个正数"(First Missing Positive)。这是一道中等难度的题目,旨在检验程序员对数组处理以及优化算法的能力。下面将详细探讨这个问题的解决方案、相关的C++编程技巧...

    leetcode代码200题c++

    2. **First Missing Positive**:这是一个关于数组处理的问题,要求找到数组中第一个缺失的正整数。它需要理解数组的特性并进行有效的遍历,可能使用到排序或哈希表等数据结构。 3. **Best Time to Buy and Sell ...

    Coding Interview in Java

    15. 位操作问题:例如Majority Element(多数元素)、First Missing Positive(缺失的第一个正数)等,利用位操作可以高效处理。 16. 排序和搜索问题:例如Meeting Rooms II(会议室 II),要求数组中元素的正确...

    算法刷题笔记leetcode/lintcode

    - First Missing Positive(缺失的第一个正数) - 2 Sum(两数之和) - 3 Sum(三数之和) - 3 Sum Closest(三数之和最接近) - Remove Duplicates from Sorted Array(删除有序数组中的重复项) - Remove ...

    算法学习笔记

    - First Missing Positive:找出最小的正整数,它在数组中未出现。 - Kth Largest Element in an Array:在未排序的数组中找到第k大的元素。 - Binary Search:二分查找法。 - First Position of Target:在有序数组...

    lrucacheleetcode-leetcode:leetcode

    First Missing Positive 广度优先搜索 773. Sliding Puzzle 864. Shortest Path to Get All Keys 深度优先搜索 996. Number of Squareful Arrays 拓扑排序 269. Alien Dictionary 单调栈 42. Trapping Rain Water 85...

    算法-leetcode-剑指offer上的题很多

    - **数组中的第一个不重复的数字(First Missing Positive)**: 找出数组中缺失的第一个正数。 #### 排序算法 - **合并排序数组(Merge Sorted Array)**: 将两个排序数组合并成一个新的排序数组。 - **寻找数组中的中...

    _leetcode-python.pdf

    - First Missing Positive: 找出数组中缺失的最小正数。 - Trapping Rain Water: 给定一个数组,其中每个元素代表一个宽度为1的柱子高度,计算能接多少雨水。 - Multiply Strings: 给定两个非负整数字符串形式的数,...

    LeetCode最全代码

    268| [Missing Number](https://leetcode.com/problems/missing-number/) | [C++](./C++/missing-number.cpp) [Python](./Python/missing-number.py) | _O(n)_ | _O(1)_ | Medium | LintCode || 318| [Maximum ...

    Leetcode-Solutions:JavaScript 语言的 Leetcode 解决方案

    ├── First Missing Positive │ ├── Readme.md │ └── solution.js ├── Trapping Rain Water │ ├── Readme.md │ └── solution.js ├── Wildcard Matching │ ├── Readme.md │ └── ...

    leetcode打不开-leetcode:leetcode

    leetcode打不开Leetcode Note Tips Tip1: Two pointer for sorted array (#Array 1. Two Sum) Tip2: Sum[i:j] = Sum[0:j] - Sum[0:i] for continuous array (# Array 560. ...First Missing Positive

    leetcode71python-leetcode:leetcode

    leetcode 71 Python用 ...Missing Positive (HARD) leetcode 42. 收集雨水 (HARD) leetcode 44. 通配符匹配 (HARD) leetcode 45. Jump Game II (HARD) Leetcode 51. N-Queens (HARD) Leetcode 52. N-

    lrucacheleetcode-oh-my-leetcode:Leetcode题解

    题:**First Missing Positive 给定一个未排序的整数数组,找到第一个缺失的正整数。 例如,给定 [1,2,0] 返回 3,而 [3,4,-1,1] 返回 2。 您的算法应该在 O(n) 时间内运行并使用恒定空间。 **第 0003 题:**String ...

    leetcode卡-FirstMissingPositives:第一个缺失的正数

    "First Missing Positive"是LeetCode中的一道经典问题,旨在考察我们对数组操作的理解以及对算法设计的能力。这个问题的标题是"第一个缺失的正数",其核心目标是从给定的未排序整数数组中找到最小的缺失正整数。 ...

    收集面试中提出的一些重要问题。-C/C++开发

    收集面试中提出的一些重要问题。 数据结构算法面试问题面试中提出的一些重要问题的集合。 数组...missing-positive / https://leetcode.com/problems/container-with-most-water/ htt

Global site tag (gtag.js) - Google Analytics