1. 程式人生 > >LeetCode-41. 缺失的第一個正數

LeetCode-41. 缺失的第一個正數

題目地址:https://leetcode-cn.com/problems/first-missing-positive/
思路:O(n)複雜度,不能用輔助空間。考慮將陣列按照順序調換位置,也就是按照0,1,2,3……的順序放置。
AC程式碼:

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