41. First Missing Positive

来源:互联网 发布:华为误删移动用户数据 编辑:程序博客网 时间:2024/05/19 07:08

这道题让我们找缺失的首个正数,由于限定了O(n)的时间,所以一般的排序方法都不能用,最开始我没有看到还限制了空间复杂度,所以想到了用哈希表来解,这个思路很简单,第一遍遍历数组把所有的数都存入哈希表中,并且找出数组的最大值,下次循环从1开始递增找数字,哪个数字找不到就返回哪个数字,如果一直找到了最大的数字,则返回最大值+1

class Solution {public:    int firstMissingPositive(vector<int>& nums) {        unordered_map<int, int> m;        int maxnum = 0;        for(int i = 0; i < nums.size(); ++i){            m[nums[i]] = 1;            maxnum = max(maxnum, nums[i]);        }        for(int i = 1; i <= maxnum; ++i){            if(m.count(i) == 0) return i;        }        return maxnum+1;    }};


原创粉丝点击