请问各位大佬如何删除数组中的重复数据?

P1059 [NOIP2006 普及组] 明明的随机数

> @[wuli周棋洛](/space/show?uid=94757) 桶排序,大哥
by arfa @ 2018-08-21 16:02:43


unique函数了解一下
by Rye_Catcher @ 2018-08-21 16:04:27


如果你是要了解离散化的话安利下我的博客https://rye-catcher.github.io/2018/07/15/学习笔记-几种离散化方式/
by Rye_Catcher @ 2018-08-21 16:05:42


@[wuli周棋洛](/space/show?uid=94757)
by Rye_Catcher @ 2018-08-21 16:05:47


哦哦感谢各位(⊙v⊙)
by wuli周棋洛 @ 2018-08-21 18:06:32


@[wuli周棋洛](/space/show?uid=94757) 用桶排序其实也很简单 ```c #include<bits/stdc++.h> using namespace std; bool a[1001]; int n,m,i; int main() { cin>>n; int b[n]; for(i=0;i<n;i++) { cin>>b[i]; if(a[b[i]]==0) { a[b[i]]++; m++; } } printf("%d\n",m); for(i=1;i<=1000;i++) { if(a[i]==1) { printf("%d ",i); } } return 0; } ```
by tdn去世号 @ 2018-09-10 22:21:27


多谢各位大佬啦现在才学会桶排QAQ
by wuli周棋洛 @ 2018-09-11 20:25:08


其实直接把重复数改成0就好,然后输出的时候不输出0
by lioxh @ 2018-09-13 09:28:57


## 计数排序嘛。 #### pascal 路过…… ```pascal var a:array[1..1000]of integer; i,n,x,sum:integer; begin readln(n); for i:=1 to n do begin read(x); a[x]:=a[x]+1; end; for i:=1 to 1000 do if a[i]<>0 then sum:=sum+1; writeln(sum); for i:=1 to 1000 do if a[i]<>0 then write(i,' '); end. ```
by 落叶拂流水 @ 2018-11-02 20:50:46


可以用STL里的sort,然后枚举两层循环排查重复,检测到重复将重复的任意一个值改为-1。不过太麻烦了,还是桶排好用。
by _melon @ 2021-05-04 08:33:41


|