1144 The Missing Number(20 分)
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 (≤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
题意:就是找到最小正整数,在输入队列中不存在的。
思路:将<=0的数都过滤掉,然后把剩下的数进行快排即可,然后相邻比较判断就能得出最小的数。
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100010
int arr[N];
int main(){
int n;
scanf("%d", &n);
int c = 0;
for(int i = 0;i < n;i++){
int t;
scanf("%d", &t);
if(t <= 0)
continue;
arr[c++] = t;
}
sort(arr, arr+c);
int num = arr[0];
for(int i = 1;i < c;i++){
if(num != arr[i] && num + 1 != arr[i]){
break;
}else{
num = arr[i];
}
}
printf("%d\n", num + 1);
return 0;
}