题解 | #序列中整数去重#
序列中整数去重
https://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
int* p = malloc(sizeof(int) * n);
if (p == NULL) {
perror("main");
return 1;
}
//赋值
int i;
for (i = 0; i < n; i++) {
scanf("%d", &p[i]);
}
int j = 0;
int k = 0;
p[k++] = p[0]; //先将首个元素保存,首个元素肯定是要输出的
//外层循环用来控制对比的元素
for (i = 1; i < n; i++) {
int flag = 0; //判断指标
//内层用来对比,只需要比自己前面的元素即可
for (j = 0; j < i; j++) {
if (p[i] == p[j]) {
flag++; //判断是否有相同元素的指标
break; //已经找到了相同元素,可以直接退出对比循环
}
}
if (flag != 1) {
//检测到当前的元素都是唯一的,将需要输出的元素放在数组前段
p[k++] = p[i];
}
}
//打印输出
for (i = 0; i < k; i++) {
printf("%d ", p[i]);
}
//释放
free(p);
p = NULL;
}
return 0;
}
