描述
给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶: 空间复杂度 O(1),时间复杂度 O(n)
数据范围:
−
2
31
<
=
n
u
m
s
[
i
]
<
=
2
31
−
1
-2^{31}<=nums[i]<=2^{31-1}
−231<=nums[i]<=231−1,
0
<
=
l
e
n
(
n
u
m
s
)
<
=
5
∗
1
0
5
0<=len(nums)<=5*10^5
0<=len(nums)<=5∗105
示例1
输入:[1,0,2]
返回值:3
示例2
输入:[-2,3,4,1,5]
返回值:2
示例3
输入:[4,5,6,8,9]
返回值:1
代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int minNumberDisappeared(vector<int>& nums) {
// write code here
int n=nums.size();
for(auto &x:nums)
if(x<=0)
x=n+1;
sort(nums.begin(), nums.end());
for(int i=0;i<n;i++){
if((i+1)!=nums[i])
return i+1;
}
return n+1;
}
};