[Oracle] LeetCode 41 First Missing Positive 思维
Given an unsorted integer array nums
, return the smallest missing positive integer.
You must implement an algorithm that runs in \(O(n)\) time and uses constant extra space.
Solution
对于 \(nums[i]\) 它对应的位置应该是 \(nums[nums[i]-1]\)
点击查看代码
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]!=nums[nums[i]-1])swap(nums[i], nums[nums[i]-1]);
}
for(int i=0;i<n;i++)
if(nums[i]!=i+1)return i+1;
return n+1;
}
};