输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
示例1
输入:
5 10 12 93 12 75
输出:
10 12 93 75
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int arr[1000]={0};
int i=0;
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++) //定义j为i后面的元素
{
if (arr[i] == arr[j]) //如果前后元素相等
{
//定义k代替j(i后面的元素)
for (int k = j; k < n - 1; k++) //由于k=n-1时arr[n]越过界限
{
arr[k] = arr[k + 1]; //后面的覆盖前面的元素
}
n--; //去重一个少一个总元素
j--; //去重一个少一个i后面的元素
}
}
}
for(i=0;i<n;i++) //将剩下n个元素输出
{
printf("%d ",arr[i]);
}
return 0;
}