算法1
哈希
题目中的读入的id数据范围小于1e5 + 10,数组的范围也小于1e5 + 10 ,因此可以用数据记录每一个数出现的次数从而确定id号码从哪开始,在哪断点,哪个id出现了多次
C++ 代码
#include <iostream>
using namespace std;
const int N = 110;
int h[100010],n;
int main()
{
cin >> n;
int k;
while(cin >> k)
{
h[k] ++; // 记录每个id出现的次数
}
int a;
for(int i = 0;i < 1e5 + 10;i ++)
{
if(h[i])
{
a = i; // 记录下从哪个id开始
break;
}
}
int c,d;
bool ch,dh; // 判断之前是否出现过断点和重复点
for(int i = a;i < 1e5 + 10;i ++)
{
if(h[i] == 0 && dh == false){ // 题目要求输出只有两个数,因此判断只可能出现一个断点 + 一个重复点
dh = true;
d = i;
}
if(h[i] > 1 && ch == false) {
ch = true;
c = i;
}
}
cout<<d<<" "<<c;
}