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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值