leetcode:41. 缺失的第一個正數(困難,陣列)

cs-凌晨技術工作室發表於2020-10-16

題目:

在這裡插入圖片描述

分析:

面試前看到的題,稍稍想了一下還是想出來了。

因為看到o(n)時間,一般要申請o(n)的空間,

如果給出了n個整數,要求出沒出現的最小的,最小的結果可能就是1-n,1-n都出現了的話就是1+n,用一個陣列A【n】,A【i】表示i是否出現出現過即可!

還不錯,希望面試時也有這個狀態。

程式碼:

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        vector<int> n(nums.size()+1,0);
        int minn=0;
        for(int i=0;i<nums.size();i++) 
        {
            if(nums[i]<=0) continue;
            if(nums[i]>nums.size()+minn) continue;
            n[nums[i]-minn]=1;
        }
        for(int i=1;i<=nums.size();i++) 
        {
            if(n[i]==0) return i+minn;
        }
        return nums.size()+1+minn;
    }
};

相關文章