LeetCode 41. First Missing Positive 时间复杂度(O( n))

时间复杂度(O( n))

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        for(int i=0;i<nums.size();++i)
            while(nums[i]!=i+1)
                if(nums[i]<=0||nums[i]>nums.size()||nums[nums[i]-1]==nums[i]){
                    nums[i]=-1;
                    break;
                }else{
                    int tmp = nums[nums[i]-1];
                    nums[nums[i]-1] = nums[i];
                    nums[i] = tmp;
                }
        for(int k=0;k<nums.size();++k)    if(nums[k]==-1)return k+1;
        return nums.size()+1;
    }
};

猜你喜欢

转载自blog.csdn.net/ziyue246/article/details/81627985