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 (≤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

分析💬

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;
}
posted @ 2019-07-14 14:33  wowpH  阅读(125)  评论(0编辑  收藏  举报