1144 The Missing Number (20 point(s))
Given N integers, you are supposed to find the smallest positive integer that is NOT in the given list.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N ( ≤ 1 0 5 ≤10^5 ≤105). Then N integers are given in the next line, separated by spaces. All the numbers are in the range of int.
Output Specification:
Print in a line the smallest positive integer that is missing from the input list.
Sample Input:
10
5 -25 9 6 1 3 4 2 5 17
Sample Output:
7
Experiential Summing-up
Using basic set
method, after sorting automatically,then one by one check the positive integer list and figure out the samllist number (from 1 to n ) NOT in the given list.
Significantly, the work should start form 1, not the list’s smallist number.
In other word, if the list begining is not 1, then output 1, not to find the smaller number next the list
One more thing, when the numbers in set(length: n) are continuous, which mean there is no lacking number, the out put n+1. That’s all.
Accepted Code
#include <iostream>
#include <stdio.h>
#include <map>
#include <set>
using namespace std;
int main() {
int n,x;
cin>>n;
set<int>st;
set<int>::iterator it;
while(n--)
{
cin>>x;
if(x>0)st.insert(x);
}
for(int i=1;i<=st.size()+1;i++)
if(!st.count(i))
{
cout<<i<<endl;
break;
}
return 0;
}