1144 The Missing Number (20分)
作者:CHEN, Yue
单位:浙江大学
代码长度限制:16 KB
时间限制:200 ms
内存限制:64 MB
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
题意:
输出所给数列中没有出现的最小整数。
思路:
用哈希表记录数列中出现的整数,然后遍历哈希表直到没有记录的位置。注意:如果给了一个很大的整数,会超出哈希表的长度,但所给数字个数有限,所以这个数字的大小超出了所给数字的个数就没有必要记录,肯定连不到那个位置。
参考代码:
#include <cstdio>
int hashtable[100000] = {0};
int main() {
int n, a, ans;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a);
if (a > 0 && a <= n)hashtable[a] = 1;
}
for (ans = 1; hashtable[ans] == 1; ans++);
printf("%d", ans);
return 0;
}
如有错误,欢迎指正