题解 | #缺失的第一个正整数# C++
缺失的第一个正整数
https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int minNumberDisappeared(vector<int>& nums) {
// write code here
sort(nums.begin(),nums.end()); //从小到大排序
int index = 1; //最小的正整数 起始 应该为1
for(int i = 0;i<nums.size();i++){
if(nums[i]<=0) continue; //排序后题目要求找最小正整数,所以<=0的直接跳过
if(nums[i]-index==0) { //数组中第一个正整数 ,如果nums[i] - index = 0,说明 nums[i] 位置
index++; //是最小的正整数,此时index++
continue;
}
else {
if(nums[i]-index>0){ // 找到最小的正整数 ,比如 nums[0] = 3 ,index = 1,此时 3-1>0,说明缺少最小的1
return index;
}
}
}
return nums[nums.size()-1] +1; //没有在for循环中找到,那说明 最小的就是nums最大值加1
}
};
科大讯飞公司氛围 474人发布