前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >544. 前K大数优先队列

544. 前K大数优先队列

作者头像
和蔼的zhxing
发布2018-09-04 11:21:12
4140
发布2018-09-04 11:21:12
举报

在一个数组中找到前K大的数

样例

给出 [3,10,1000,-99,4,100], k = 3.

返回 [1000, 100, 10]

优先队列

一种容易想到的是冒泡排序,每次冒泡都会冒出一个最大值,显然是可以的,写起来比较简单就不写了,另外一种可以使用优先队列即大顶堆,上次在合并数字的题目中也用到了,那次用的是小的在顶,无非是把类型改一下,可以再看一下:priority_queue.

用优先队列的话,只需要把数据全部放入队列之中(这是一种二分插入),然后取出前k个(取出top,然后pop掉top)就可以了:

代码语言:javascript
复制
  */
    vector<int> topk(vector<int> &nums, int k) {
        priority_queue<int> q_res;
        vector<int> res;
        for(auto n:nums)
        {
            q_res.push(n);
        }
        while(k--)
        {
            res.push_back(q_res.top());
            q_res.pop();
        }
        return res;
        // write your code here
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.03.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优先队列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档