首页 > 代码库 > hlg1287数字去重和排序II【hash】
hlg1287数字去重和排序II【hash】
大意:
告诉你n个数让你把其中重复的数字保留一个并且排序输出
分析:
每读入一个数若未出现过就把这个数存起来
昨天re无数次原因是输出的时候我是先输出的第一个然后把每个依次输出
这就有一个问题就是如果只有一个元素的还要访问第一个元素从而造成re
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 const int maxn = 5000007; 8 9 struct Node {10 int d;11 Node *next;12 };13 Node *head[maxn + 10];14 Node num[maxn + 10];15 int ans[maxn];16 17 int main() {18 int n;19 int d;20 while(EOF != scanf("%d",&n) ) {21 memset(head, 0, sizeof(head));22 int tot = 1;23 int cnt = 0;24 for(int i = 1; i <= n; i++) {25 scanf("%d",&d);26 bool flag = true;27 int c = d % maxn;28 Node *pt = head[c];29 while(pt) {30 if(pt -> d == d) {31 flag = false;32 break;33 }34 pt = pt -> next;35 }36 if(flag) {37 ans[cnt++] = d;38 num[tot].d = d;39 num[tot].next = head[c];40 head[c] = &num[tot++];41 }42 }43 sort(ans, ans + cnt);44 printf("%d\n", cnt);45 printf("%d", ans[0]46 for(int i = 0; i < cnt; i++) {47 printf(i == 0 ? "%d" : " %d", ans[i]);48 }49 puts("");50 }51 return 0;52 }
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 const int maxn = 5000007; 8 9 struct Node {10 int to;11 int next;12 }e[maxn + 10];13 14 int head[maxn + 10];15 int tot;16 17 bool Find(int u, int v) {18 for(int i = head[u]; i; i = e[i].next) {19 if(e[i].to == v) {20 return true;21 }22 }23 e[tot].to = v;24 e[tot].next = head[u];25 head[u] = tot++;26 return false;27 }28 29 int ans[maxn];30 31 int main() {32 int n;33 int d;34 while(EOF != scanf("%d",&n) ) {35 int cnt = 0;36 memset(head, 0, sizeof(head));37 tot = 1;38 for(int i = 1; i <= n; i++) {39 scanf("%d",&d);40 int c = d % maxn;41 if(!Find(c, d)) {42 ans[cnt++] = d;43 }44 }45 sort(ans, ans + cnt);46 printf("%d\n",cnt);47 if(cnt != 0) printf("%d", ans[0]);48 for(int i = 1; i < cnt; i++) {49 printf(" %d",ans[i]);50 }51 puts("");52 }53 return 0;54 }
hlg1287数字去重和排序II【hash】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。