不在数列中的数字
题目描述
给出一个长度为n的数列,包含1到n的数字,输出1到n中不在数列中的数字。
输入格式
第一行一个数字n,表示数组长度。(1≤n≤1e5)
第二行n个用空格隔开的数字,分别表示数组中n个数字。(1≤ai≤n)
输出格式
第一行一个数字x,表示从1到n中有几个数字没有出现过。
接下来x行,每行一个数字,表示没有出现的数字。(输出数字从小到大排序)
样例输入
8
4 3 2 7 8 2 3 1
样例输出
2
5
6
思路:
做标记即可
#include<bits/stdc++.h>
using namespace std;
int a[100005]={0};
main(){
int n;
cin>>n;
int t;
for(int i=0;i<n;i++){
cin>>t;
a[t]++;
}
int num=0;
for(int i=1;i<=n;i++){
if(a[i]==0) num++;
}
cout<<num<<endl;
for(int i=1;i<=n;i++){
if(a[i]==0){
cout<<i<<endl;
num--;
if(num==0) break;
}
}
}