5.Kth Largest Element in a Stream-PriorityQueue的使用

PriorityQueue:优先级队列,实际上就是自带排序的队列,操作的方式,对于Bean来说,可以实现Comparable进行排序。
注意:其是非线程安全的!


class KthLargest  {

    private int k;
    //优先级队列
    private PriorityQueue<Integer> queue;

    public KthLargest(int k, int[] nums) {
        this.k  = k;
        queue = new PriorityQueue<>();
        if(nums.length <= k) {
            for(int num:nums) {
                queue.add(num);  
            }
        }else {
            for(int i = 0;i<k;i++) {
                queue.add(nums[i]);
              }  
            for(int i = k;i<nums.length;i++) {
                //由优先级队列的定义可知,前面k个元素均是从小到大
                //故插入的元素只需要跟队列最后一个元素比较即可
                if(queue.peek()<nums[i]) {
                    queue.poll();
                    queue.add(nums[i]);
                }
            }
        }
    }

    public int add(int val) {
        if(queue.size()<k) {
            queue.offer(val);
        }else if(queue.peek()<val) {
            queue.poll();
            queue.offer(val);
        }
        return queue.peek();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java继承关系初始化顺序 父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父...
    第六象限阅读 6,518评论 0 9
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,498评论 11 349
  • 开关插座虽小,但是布置不合理,使用起来将极其苦恼。 你是否遇到过这些烦恼? 寒冬天还要爬下床去关灯? 电器要使用却...
    工程宝阅读 2,286评论 0 2
  • 一天,小明在院子里踢足球,不小心把球踢到妈妈刚刚洗过的衣服上,衣服掉在了地上脏了,他一惊:糟了!衣服脏了,...
    w小亦阅读 1,522评论 0 0
  • 2015年10月27日 除夜宿石头驿 (戴叔伦) 旅馆谁相问?寒灯独可亲。 一年将夜尽,万里未归人。 寥落悲前...
    薄荷林子阅读 2,600评论 0 6

友情链接更多精彩内容