110-First Missing Positive

来源:互联网 发布:手机淘宝店铺怎么收藏 编辑:程序博客网 时间:2024/06/14 21:58

–41. First Missing Positive
Total Accepted: 66766 Total Submissions: 277612 Difficulty: Hard

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.

class Solution {public:    int firstMissingPositive(vector<int>& nums) {        int n = nums.size();        int i = 0;        while (i < n) {            if (nums[i] >= 0 && nums[i] < n && nums[nums[i]] != nums[i])//讲制定数放到相应数对应下标中                swap(nums[i], nums[nums[i]]);            else i++;        }        int k = 1;        while (k < n && nums[k] == k) k++;//找到缺口        if (n == 0 || k < n) return k;        else return nums[0] == k ? k + 1 : k;    }};
0 0