image.png

思路

使用堆这种数据结构

code

  1. class KthLargest {
  2. final PriorityQueue<Integer> pQueue; //声明一个堆
  3. final int k;
  4. public KthLargest(int k, int[] nums) {
  5. this.k = k;
  6. this.pQueue = new PriorityQueue<>(k); //堆的容量为k
  7. for(int i=0;i<nums.length;i++){
  8. add(nums[i]); //每次向堆中插入元素
  9. }
  10. }
  11. public int add(int val) {
  12. if(pQueue.size()<k){ //如果堆没满 则加入堆
  13. pQueue.add(val);
  14. }else if(pQueue.peek()<val){ //如果堆已经超过k则判断是否需要更新
  15. pQueue.remove();
  16. pQueue.add(val);
  17. }
  18. return pQueue.peek();
  19. }
  20. }