抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

STL的sort+unique做法

unique是个去重函数,其实是把重复的元素放在数组后边。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;
int a[100];
int main(){
int len;
cin >> len;
for(int i = 0;i < len;i ++)cin >> a[i];
sort(a,a+len); //记住!先 排 序
len = unique(a,a+len) - a; //如果你想得到前几个去重后的元素,你就得这么写
cout << len << endl;
for(int i = 0;i < len;i ++)cout << a[i] << ' ';
}

压行版本:

1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>
int a[100],en;
int main(){
std::cin >> len;
for(int i = 0;i < len;i ++)std::cin >> a[i];
std::sort(a,a+len); //记住!先 排 序
len = std::unique(a,a+len) - a; //如果你想得到前几个去重后的元素,你就得这么写
std::cout << len << std::endl;
for(int i = 0;i < len;i ++)std::cout << a[i] << ' ';
}

除了考试;死也不写return0;


D语言做法

D语言做法就是个正常做法了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import std.stdio;
void shell_sort(int[] arr, int len) {//这是我自己写的一个Shell排序
int gap, i, j;
int temp;
for (gap = len >> 1; gap > 0; gap = gap >> 1)
for (i = gap; i < len; i++) {
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
}

int[100] a = [100,100,100,345,11,12350,23];
int main(string[] args){
int n;int c;
readf("%d",&n);
for (int i = 0 ; o < n;i ++) readf("%d",&a[i]);
shell_sort(a,8);
for(int i = 1;i < n;i ++){
c = a[i];
if(!i)write(a[i]," ");
else if(c != a[i-1])write(a[i]," ");
else ++i;
}
return 0;
}

评论