1144 The Missing Number
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 (≤10
5
). 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
题目大意:寻找一段序列中,没出现的最小正整数。
分析:将大于0的数放在v中,进行排序。如果序列中不存在负数,最小的起始数为1,相反则为v[0],
参考代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
vector<int>v;
int n, temp, minn, flag = 0;
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &temp);
if (temp > 0) v.push_back(temp);
else flag = 1;
}
sort(v.begin(), v.end());
if (flag)minn = 1;
else minn = v[0];
for (int i = 0; i < v.size(); i++) {
int j = i + 1, cnt = 1;
while (j < v.size() && v[j] == v[i]) {
cnt++; j++;
}
i += (cnt - 1);
if (v[i] == minn) { minn++; }
else { cout << minn; return 0; }
}
cout << minn;
return 0;
}