题解 | #序列中整数去重#

序列中整数去重

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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务