// Test3.cpp : 定义控制台应用程序的入口点。
// 程序员面试100题(算法)之输入n个整数,输出其中最小的k个
#include "stdafx.h"
#include<iostream>
#include<vector>
#include<set>
using namespace std;
void findKLeastNumbers(multiset< int, greater<int> > &container, vector<int> &vec, int k)
{
container.clear();
if(vec.size() < k || k <= 0 || vec.empty())
cout << "Please check your parameters" << endl;
vector<int>::iterator iter = vec.begin();
for(; iter != vec.end(); iter++)
{
if(container.size() < k)
{
container.insert(*iter);
}
else
{
multiset< int, greater<int> >::iterator cIter = container.begin();
if(*iter < *cIter)
{
container.erase(cIter);
container.insert(*iter);
}
}
}
}
void createVector(vector<int> &vec)
{
int num;
cout << "Please input the numbers(65536 means ending)" <<endl;
while(cin >> num)
{
if(65536 == num)
break;
vec.push_back(num);
}
}
void printMultiset(multiset< int, greater<int> > numbersSet)
{
multiset< int, greater<int> >::iterator iter = numbersSet.begin();
for(; iter != numbersSet.end(); iter++)
{
cout << *iter << "\t";
}
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int k =0;
vector<int> vec;
multiset< int, greater<int> > container;
createVector(vec);
cout << vec.size() << endl;
cout << "Please input the k:" <<endl;
cin >> k;
findKLeastNumbers(container, vec, k);
cout << "The least k numbers are:" <<endl;
printMultiset(container);
return 0;
}
分享到:
相关推荐
程序员面试100题程序员面试100题程序员面试100题
程序员面试的100题,程序员面试的题目。
程序员面试经典算法题.通过对经典的有一定难度的算法类题目的分析,培养程序员算法思维.
程序员面试题精选程序员面试题精选程序员面试题程序员面试题精选精选
程序员面试题精选100题,各种精选面试算法题目, 经典算法题目,面试算法题目
程序员面试题精选100题
非常好的面试题,经典数据结构和算法题目。
程序员面试智力、 算法题汇总一.pdf
程序员常见面试题(算法数据结构)程序员常见面试题(算法数据结构)程序员常见面试题(算法数据结构)
程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试题精选100题程序员面试...
程序员面试题精选 C++ 算法 微软 google 程序员面试题精选 C++ 算法 微软 google
程序员面试试题程序员面试试题程序员面试试题程序员面试试题程序员面试试题程序员面试试题
程序员面试题精选100题-何海涛 程序员 面试题 算法 数据结构
本书是一本讲解程序员面试笔试算法的书籍。在写法上,除了讲解如何解答算法问题以外,还引入了例子辅以说明,以便读者能够更加容易地理解。 本书将程序员面试笔试过程中的各类算法类真题一网打尽。在题目的广度上,...
程序员面试智力、算法题汇总一.pdf,这是一份不错的文件
世界500强面试题+程序员面试宝典。 世界500强面试题+程序员面试宝典 世界500强面试题+程序员面试宝典。