使用无序集合存入每个输入的数,再从0~n里查找没有的数

#include <iostream>
#include <unordered_set>
using namespace std;

int main() {
    int num;
    unordered_set<int> st;
    while (cin >> num) {
        st.insert(num);
    }
    int n=st.size()+1;
    for (int i=0; i<n; i++) {
        if (st.find(i)==st.end()) {
            cout << i <<endl;
            break;
        }
    }
    return 0;
}

时间复杂度:无序集合的插入和查找为O(1),遍历0~n为O(n),总共为O(n)

空间复杂度:用于集合的开销,O(n)