[剑指offer]最小的K个数
2016-05-03 10:31
204 查看
题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。分析:寻找最小的k个数,构造一个大小为k最大堆,若k后面的元素比堆顶元素大,直接跳过,若比堆顶元素小,则弹出堆顶元素,把这个元素插入堆。
代码:
class Solution { public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { priority_queue<int> maxheap; int n=input.size(); if(k<=0||k>n){ return vector<int>(); } for(int i=0;i<n;i++){ if(maxheap.size()<k){ maxheap.push(input[i]); }else{ if(input[i]>=maxheap.top()){ continue; }else{ maxheap.pop(); maxheap.push(input[i]); } } } vector<int> ret; while(!maxheap.empty()){ ret.push_back(maxheap.top()); maxheap.pop(); } return vector<int>(ret.rbegin(),ret.rend()); } };
相关文章推荐
- JavaScript 开发进阶:理解 JavaScript 作用域和作用域链
- js文件调用后台程序
- CSS3 :nth-child() 选择器
- 基于HTML5的有弹幕功能的视频播放器
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数
- JS DOM常用对象的属性和方法
- 问题总结(ng+bootstrap+css)
- js选择器的兼容
- HTML5新标签
- Sping--life cycle
- 前端jquery部分很精彩
- 《深入浅出Node.js》学习笔记——(一)Node简介
- JQuery 核心函数 基础研究与提高
- d3.js——csv表格的读取
- 【LeetCode】LeetCode——第19题:Remove Nth Node From End of List
- jQuery代码实现对话框右上角菜单带关闭×
- 制作动画或小游戏——CreateJS基础类(一)
- 跨域的三种方法总结:代理,JSONP,以及XHR2
- [剑指Offer]把数组排成最小的数
- 剑指offer 数组中只出现一次的数字