题解 | #序列中整数去重#
序列中整数去重
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,但后来发现排序会改变原有顺序,所以稍作改进,在读入的时候判断是否出现过,然后进一步判断是否该输出