题目描述
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。
输入
输入包含两行:第一行包含一个正整数n(1 ≤ n ≤ 20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于0、小于等于5000。
输出
输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。
样例输入
5
10 12 93 12 75
样例输出
10 12 93 75
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,a[20005];cin>>n;for(int i=0;i<n;i++) // 循环 n 次,依次读取 n 个整数,并将它们存储到数组 a 中{cin>>a[i];}for(int i=0;i<n;i++) // 外层循环,遍历数组中的每个元素{for(int k=i+1;k<n;k++) // 中层循环,从外层元素的下一个位置开始,查找与外层元素相同的元素{if(a[i]==a[k]) // 判断当前元素 a[k] 是否与外层元素 a[i] 相同{for(int c=k;c<n;c++) // 若相同,通过内层循环将后续元素依次前移覆盖重复元素{a[c]=a[c+1];}k--; // 由于元素前移,k 减 1,以便下次继续检查当前位置n--; // 数组长度减 1}}}for(int i=0;i<n;i++) // 循环输出去重后的数组元素{cout<<a[i]<<" ";}return 0;
}