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

序列中整数去重

https://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490

#include <stdio.h>
#include <string.h>
int main() {
    int n,i;
    scanf("%d",&n);
    int arr[5001];                     //计数数组,用来每个数出现的次数
    memset(arr,0,5001*sizeof(int));    //数组初始化为0
    for(i=0;i<n;i++)
    {
        int x;
        scanf("%d",&x);
        if(arr[x]==0)                  //arr[x]=0,表示x这个数从未出现过
        {
            printf("%d ",x);           //输出x
            arr[x]++;                  //x出现的次数加一,下一次arr[x]就不为0了,也就不可能再输出了
        }
        
    }
}

方法有些捡漏的嫌疑,没有思路的情况下就想着用计数排序,对于arr[i]>0的情况,都只输出一次i,但后来发现排序会改变原有顺序,所以稍作改进,在读入的时候判断是否出现过,然后进一步判断是否该输出

全部评论

相关推荐

09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务