题目描述:
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
思路:
给定的数组进行排列
例1:
数据:3 4 -1 1
下标:0 1 2 3
第1次交换: -1 4 3 1
0 1 2 3
第2次交换:-1 1 3 4
0 1 2 3
第3次交换:1 -1 3 4
0 1 2 3
遍历发现下标为1处的值应该是2 ,返回2
例1:
数据:2 1 0
下标:0 1 2
第1次交换: 1 2 0
0 1 2
遍历发现下标为2处的值应该是3 ,返回3
代码如下:
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
for(int i=0;i<nums.size();i++){
while(nums[i]>0&&nums[i]<=nums.size()&&nums[i]!=nums[nums[i]-1]){
swap(nums[i],nums[nums[i]-1]);
}
}
for(int i=0;i<nums.size();i++){
if(nums[i]!=i+1)
return i+1;
}
return nums.size()+1;
}
};