美文网首页
Leetcode-703:数据流中的第K大元素

Leetcode-703:数据流中的第K大元素

作者: 小北觅 | 来源:发表于2019-04-26 09:58 被阅读0次

题目描述:

设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。

你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。

思路:
维护一个大小为K的小顶堆,当堆不满时,直接将元素添加进来。当堆满时,比较新来的元素和最小堆堆顶的大小,如果小于,则直接丢弃,如果大于则将最小堆堆顶丢弃,新元素入堆,重新调整堆即可。

class KthLargest {
    
    PriorityQueue<Integer>  queue ;
    int k;
    public KthLargest(int k, int[] nums) {
        this.k = k;
        queue = new PriorityQueue<>(k);
        for(int n: nums)
            add(n);
    }
    
    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();            
    }
}

/**
 * Your KthLargest object will be instantiated and called as such:
 * KthLargest obj = new KthLargest(k, nums);
 * int param_1 = obj.add(val);
 */

相关文章

  • 数据流中的第K大元素

    数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。

  • Leetcode 703 数据流中的第K大元素

    数据流中的第K大元素 题目 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个...

  • LeetCode 703. 数据流中的第K大元素

    703. 数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第...

  • Day74:数据流中的第K大元素

    Day74:数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是...

  • Leetcode-703:数据流中的第K大元素

    题目描述: 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你...

  • LeetCode 数据流中的第 K 大元素

    设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。 请...

  • 703. 数据流中的第K大元素

    题目描述 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的...

  • 寻找数据流中的第K大元素

    设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的KthLa...

  • 数据流中的第 K 大元素

    设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLa...

  • 703. 数据流中的第K大元素

    设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的 KthL...

网友评论

      本文标题:Leetcode-703:数据流中的第K大元素

      本文链接:https://www.haomeiwen.com/subject/iboxnqtx.html