Hrbust-1287-数字去重和排序II(set集合容器应用)
2017-06-02 00:51
225 查看
数字去重和排序II
Time Limit: 4000 MS Memory Limit: 65536 K
Total Submit: 1098(320 users) Total Accepted: 431(281 users) Rating: Special Judge: No
Description
用计算机随机生成了N个0到1000000000(包含0和1000000000)之间的随机整数(N≤5000000),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再把这些数从小到大排序。
请你完成“去重”与“排序”的工作
Input
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。
Output
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
Sample Input
10
20 40 32 67 40 20 89 300 400 15
Sample Output
8
15 20 32 40 67 89 300 400
应该是用哈希拉链法来做
这里只是作为练习set容器的使用
STL中的set集合容器—->特点是插入容器的元素会自动排序,并且不会有重复的元素,也就是说会自动去重,传说中set容器是二分查找,不过好像实际运行时也不是那么快?
Time Limit: 4000 MS Memory Limit: 65536 K
Total Submit: 1098(320 users) Total Accepted: 431(281 users) Rating: Special Judge: No
Description
用计算机随机生成了N个0到1000000000(包含0和1000000000)之间的随机整数(N≤5000000),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再把这些数从小到大排序。
请你完成“去重”与“排序”的工作
Input
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。
Output
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
Sample Input
10
20 40 32 67 40 20 89 300 400 15
Sample Output
8
15 20 32 40 67 89 300 400
应该是用哈希拉链法来做
这里只是作为练习set容器的使用
STL中的set集合容器—->特点是插入容器的元素会自动排序,并且不会有重复的元素,也就是说会自动去重,传说中set容器是二分查找,不过好像实际运行时也不是那么快?
#include<iostream> #include<stdio.h> #include<iterator>//迭代器是有头文件的 #include<set>///已重复元素不会再次插入,并且插入元素会自动排序。神特么好用 using namespace std; int main() { long long n,a,i; set<long long>q; while(scanf("%lld",&n)!=EOF) { q.clear();///清空容器 set<long long>::iterator nano;//迭代器指针的使用,先定义是什么容器的,定义什么型的,定义名字 for(i=1; i<=n; i++) { scanf("%lld",&a); q.insert(a); c2e8 //装入容器 } printf("%d\n",q.size());///size返回的是一个值,目测是一个int型的值,因为%lld会输出奇怪的东西 printf("%lld",*q.begin());///而begin和end返回的是一个地址,因此begin需要指针或者迭代器承接,或者加上*运算符再输出 for(nano=++q.begin(); nano!=q.end(); nano++)///set中的地址是随输入连在一起的所以可以用自增地址来移动指针 { printf(" %lld",*nano);///end()返回的是容器中最后一个值的后面那个!不是最后一个值! } printf("\n");///注意:迭代器中的++ --自增自减符号是被重载过的,和原本意义已经不一样了。通过重载的运算符实现指针移动 } return 0; }
相关文章推荐
- 哈理工oj Hrbustacm 1287 数字去重和排序II(STL 或着 hash 拉链法)
- hlg1287数字去重和排序II【hash】
- hlg1287数字去重和排序II【hash】
- stl之set集合容器应用基础
- zoj 1760 Doubles(set集合容器的应用)
- 一种排序(set集合 结构体的应用)
- set集合容器的妙用(用于去重,排序)
- java--解决矩形排序(Set集合运用)
- My_Java之笔记(8)- 实现TreeSet集合的排序方法
- linq排序,如何实现又有数字又有文本的string集合先按数字再按文本排序
- 对hibernate的set集合进行排序
- Java中集合容器类List和Set的用法
- 黑马程序员_JAVA学习日记_JAVA中API:集合框架1(Collection,List,Set及其子类和迭代器的应用)
- Hibernate 中对set的集合的排序解决办法
- Hibernate中Set集合排序
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集
- Java基础之TreeSet集合使用泛型、比较器排序示例:
- Java中集合容器类List和Set的用法
- 黑马程序员________Java集合List和Set的原理应用学习笔记
- 反射应用和集合按照某个字段排序