美文网首页
【PAT_1144】 The Missing Number

【PAT_1144】 The Missing Number

作者: 6J | 来源:发表于2018-08-03 16:23 被阅读0次

    题目描述

    给出一组数中缺失的最小正整数

    输入

    第一行N(之后有N个数)
    第二行:N个数

    输出

    输出这N个数中的最小正整数

    解题思路

    将输入的数据中的所有正数放在datas(vector<int>)中。按从小到大的顺序排列datas。如果datas为空则输出1;如果datas[0]!=1,则输出datas[0]-1;否则找出第一个不连续的数即if (datas[i] != datas[i - 1] + 1&&datas[i]!=datas[i-1])此时输出 cout << datas[i - 1] + 1;。如果便利完了则输出最后一个元素+1;

    代码

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main() {
        int n;
        cin >> n;
        vector<int> datas;
        int t;
        for (int i = 0; i < n; i++) {
            cin >> t;
            if (t > 0)datas.push_back(t);
            
        }
        if(datas.size()==0){
          cout<<1<<endl;
        }else{
          sort(datas.begin(), datas.end());
        if (datas[0] != 1)cout<< datas[0] - 1;
        else {
            bool flag = false;
            for (int i = 1; i < datas.size(); i++) {
                if (datas[i] != datas[i - 1] + 1&&datas[i]!=datas[i-1]) {
                    cout << datas[i - 1] + 1;
                    flag = true;
                    break;
                }
            }
            if (!flag)cout << datas[datas.size() - 1] + 1;
        }
        }
        
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:【PAT_1144】 The Missing Number

          本文链接:https://www.haomeiwen.com/subject/ikquvftx.html