打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
程序员面试100题(算法)之输入n个整数,输出其中最小的k个
  1. // Test3.cpp : 定义控制台应用程序的入口点。   
  2. // 程序员面试100题(算法)之输入n个整数,输出其中最小的k个   
  3.   
  4. #include "stdafx.h"   
  5. #include<iostream>   
  6. #include<vector>   
  7. #include<set>   
  8.   
  9. using namespace std;  
  10.   
  11. void findKLeastNumbers(multiset< int, greater<int> > &container, vector<int> &vec, int k)  
  12. {  
  13.     container.clear();  
  14.   
  15.     if(vec.size() < k || k <= 0 || vec.empty())  
  16.         cout << "Please check your parameters" << endl;  
  17.   
  18.     vector<int>::iterator iter = vec.begin();  
  19.   
  20.     for(; iter != vec.end(); iter++)  
  21.     {  
  22.         if(container.size() < k)  
  23.         {  
  24.             container.insert(*iter);  
  25.         }  
  26.         else  
  27.         {  
  28.             multiset< int, greater<int> >::iterator cIter = container.begin();  
  29.   
  30.             if(*iter < *cIter)  
  31.             {  
  32.                 container.erase(cIter);  
  33.                 container.insert(*iter);  
  34.             }  
  35.         }  
  36.     }  
  37. }  
  38.   
  39. void createVector(vector<int> &vec)  
  40. {  
  41.     int num;  
  42.   
  43.     cout << "Please input the numbers(65536 means ending)" <<endl;  
  44.     while(cin >> num)  
  45.     {  
  46.         if(65536 == num)  
  47.             break;  
  48.         vec.push_back(num);  
  49.     }  
  50. }  
  51.   
  52. void printMultiset(multiset< int, greater<int> > numbersSet)  
  53. {  
  54.     multiset< int, greater<int> >::iterator iter = numbersSet.begin();  
  55.   
  56.     for(; iter != numbersSet.end(); iter++)  
  57.     {  
  58.         cout << *iter << "\t";  
  59.     }  
  60.   
  61.     cout << endl;  
  62. }  
  63.   
  64. int _tmain(int argc, _TCHAR* argv[])  
  65. {  
  66.     int k =0;  
  67.     vector<int> vec;  
  68.     multiset< int, greater<int> > container;  
  69.   
  70.     createVector(vec);  
  71.     cout << vec.size() << endl;  
  72.   
  73.     cout << "Please input the k:" <<endl;  
  74.     cin >> k;  
  75.     findKLeastNumbers(container, vec, k);  
  76.     cout << "The least k numbers are:" <<endl;  
  77.     printMultiset(container);  
  78.   
  79.     return 0;  
  80. }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++ find()函数用法(一般用于vector的查找)
STL vector用法
C/C++拾遗(九):string对象与vector对象
Vector<vector<int>> array用法(转载)
(C++)STL中map按照vaule来排序
vector 详细用法 C++-CSDN博客
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服