使用STL求第K大数

来源:互联网 发布:centos搭建php网站 编辑:程序博客网 时间:2024/05/28 22:12

项目上需要使用C++,抽空正好把C++熟悉一下。

期待接下来的这个项目能给我的C++编程能力带来提升。

先来个set版本的。

#include <iostream>#include <string>#include <ios>#include <deque>#include <vector>#include <list>#include <set>#include <algorithm>using namespace std;int main( ) {inta, n, k, size;multiset<int> mySet;multiset<int>::iterator iter;cin >> n >> k;size = 0;do {cin >>a;if(size++ < k) {mySet.insert(a);} else {iter = mySet.begin();if(a > *iter) {mySet.erase(iter);mySet.insert(a);}}}while(--n );iter = mySet.begin();cout << *iter <<endl;system("pause");return 0;}
再来个map版本的。

#include <iostream>#include <string>#include <ios>#include <deque>#include <vector>#include <list>#include <set>#include <map>#include <algorithm>using namespace std;int main( ) {inta, n, k, size;map <int, bool> myMap;map <int, bool>::iterator iter;cin >> n >> k;size = 0;do {cin >>a;if(size++ < k) {myMap[a] = true;} else {iter = myMap.begin();if(a > (iter->first)) { myMap.erase(iter);myMap[a] = true;}}}while(--n );iter = myMap.begin();cout << iter->first <<endl;system("pause");return 0;}



原创粉丝点击