使用无序集合存入每个输入的数,再从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)