PAT(A) 1144 The Missing Number(C)统计
题目链接:1144 The Missing Number (20 point(s))
Description
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
分析💬
N
最大为105,因此答案能连续的数最多为105,因此可以定义一个数组a[100002]
记录每个数字出现的次数。
这里要注意的是数组大小至少为100002。
代码💻
/*****************************************************************************
Submit Time Status Score Problem Compiler Run Time User
7/14/2019, 12:02:50 Accepted 20 1144 C (gcc) 22 ms wowpH
*****************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int main() {
int n, temp;
scanf("%d", &n); //数字个数
int a[100002]; //保存数字出现的次数
memset(a, 0, sizeof(a)); //初始0次
for (int i = 0; i < n; ++i) {
scanf("%d", &temp); //数字
if (temp > 0 && temp <= 100000) { //temp是正整数且不超过100000
++a[temp]; //次数加1
}
}
for (int i = 1; i < 100002; ++i) { //次数为0的就是我们要找的
if (0 == a[i]) {
printf("%d\n", i);
break;
}
}
return 0;
}