PAT(Advanced)甲级1144 The Missing Number C++实现
题目链接
题目大意
给定一个整数序列,求解最小未出现在序列中的正整数
算法思路
根据题目要求,求解最小未出现在序列中的正整数,序列长度N最大为10e5
,则说明该最小未出现的正整数必然小于等于N + 1
,开辟数组大小至少为N+2
,若输入的数为非正数或大于N
则忽略,否则在布尔数组置对应下标的值为true
,用于后续遍历布尔数组求解结果
AC代码
/*
author : eclipse
email : eclipsecs@qq.com
time : Fri Jun 26 09:48:26 2020
*/
#include <bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 10e5 + 10;
vector<bool> exists;
int main(int argc, char const *argv[]) {
int N;
exists.resize(MAX_SIZE);
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int value;
scanf("%d", &value);
if (value > 0 && value < MAX_SIZE) {
exists[value] = true;
}
}
for (int i = 1; i < exists.size(); i++) {
if (!exists[i]) {
printf("%d", i);
break;
}
}
return 0;
}
输入数据
10
5 -25 9 6 1 3 4 2 5 17
输出数据
7
最后
- 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!