题解 | #缺失的第一个正整数# 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

    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务