整数去重
题目描述
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。
输入格式
输入包含两行:
第一行包含一个正整数n(1≤n≤20000),表示第二行序列中数字的个数;
第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于50。
输出格式
输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。
输入样例
5
10 12 93 12 75
输出样例
10 12 93 75
【代码示例】
#include<iostream> using namespace std; int a[100000]={}, b[100000]={}; int main(){ int n; cin>>n; // 1. 输入n个数并标记n个数已经输入; for(int i=0; i<n; i++){ cin>>a[i]; b[i]=1; } // 2. 嵌套循环查找相同数字,找到后将后面的数字去除标记; for(int i=0; i<n; i++){ for(int j=i+1; j<n; j++){ if(a[i]==a[j]){ b[j]=0; } } } // 3. 输出标记的数字。 for(int i=0; i<n; i++){ if(b[i]==1){ cout<<a[i]<<" "; } } return 0; }
#include<iostream> using namespace std; int a[20000]={}, book[20000]={}; int main(){ // a数组: 10 12 93 12 75 // b数组: 1 2 1 1 // b数组下标: 10 12 93 75 int n, m; cin>>n; for(int i=0; i<n; i++){ cin>>m; a[i]=m; // 存储n个数字; book[m]++; } for(int i=0; i<n; i++){ if(book[a[i]]==1) cout<<a[i]<<" "; // 输出出现一次的数字: else if(book[a[i]]>1){ cout<<a[i]<<" "; book[a[i]]=0; // 避免a[i]再次输出。 } } return 0; }

浙公网安备 33010602011771号