博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决面试问题中的top k问题 Leetcode
阅读量:5787 次
发布时间:2019-06-18

本文共 735 字,大约阅读时间需要 2 分钟。

使用堆,堆插入一个数据是logk,删除一个数据是logk,复杂度为logk

Java

class Solution {    public int findKthLargest(int[] nums, int k) {        PriorityQueue
minQueue = new PriorityQueue<>(k); for (int num : nums) { if (minQueue.size() < k || num > minQueue.peek()) minQueue.offer(num); if (minQueue.size() > k) minQueue.poll(); } return minQueue.peek(); }}

C++的

class Solution{public:    int findKthLargest(vector
& nums, int k) { priority_queue
, greater
>pq; for(auto num:nums) { if(pq.size()
pq.top()) pq.pop(),pq.push(num); } return pq.top(); }};

 使用快速选择,就是用快排改的,将数组分组,但是这个也是一个不稳定的做法

 

转载于:https://www.cnblogs.com/BobHuang/p/10846865.html

你可能感兴趣的文章
PostgreSQL并发控制(MVCC, 事务,事务隔离级别)
查看>>
DM***的第二阶段OSPF
查看>>
20180702搭建青岛RAC记录
查看>>
Spring Security OAuth 实现OAuth 2.0 授权
查看>>
linux文件及简单命令学习
查看>>
dubbo源码分析-架构
查看>>
新 Terraform 提供商: Oracle OCI, Brightbox, RightScale
查看>>
6套毕业设计PPT模板拯救你的毕业答辩
查看>>
IT兄弟连 JavaWeb教程 JSP与Servlet的联系
查看>>
Windows phone 8 学习笔记
查看>>
linux并发连接数:Linux下高并发socket最大连接数所受的各种限制
查看>>
详解区块链中EOS的作用。
查看>>
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>
循序渐进Docker(一)docker简介、安装及docker image管理
查看>>
jsp页面修改后浏览器中不生效
查看>>
大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理...
查看>>
信号量实现进程同步
查看>>
Spring4-自动装配Beans-通过构造函数参数的数据类型按属性自动装配Bean
查看>>