题解 | #没有出现的编号#

没有出现的编号

https://www.nowcoder.com/practice/875d705df65c401a905f574070e09320

知识点

排序,模拟

思路

首先将这个数组从小到大排序,然后从小到大遍历。

对最大的负数maxx,先初始化为负无穷,遇到比他大的负数就更新即可。若从未更新,说明没有负数,maxx=0

对未出现的最小正整数minn,假设是1。在数组从小到大遍历到正数时,若刚好为minn,说明minn出现了,下一个未出现正整数可能是minn++,再下一次检查即可。否则就是没出现的,此刻的minn即为答案。

代码 c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector
     */
    vector<int> findMissingAndMaxNegative(vector<int>& nums) {
        // write code here
        vector<int>ans;
        int minn=-0x3f3f3f3f;
        int maxx=1;
        bool flag=1;
      sort(nums.begin(),nums.end());
       for(auto v:nums)
       {
        if(v<0&&v>=minn)
        {minn=v;
        flag=0;
        }
        if(v>0&&v==maxx)maxx=v+1;
       }
       if(flag)minn=0;
       
        ans.push_back(maxx); 
        ans.push_back(minn);
        return ans;
    }
};
全部评论

相关推荐

11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务