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

京公网安备 11010502036488号