[路飞]_LeetCode_数组中的第 K 个最大元素

151 阅读1分钟

题目

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4]k = 2
输出: 5

来源:力扣(LeetCode)leetcode-cn.com/problems/kt…

解题思路

  1. 通过最小优先队列解题
  2. 把数组中的元素依次入队列
  3. 把第 k 个后面的元素都出队列
  4. 再次出队列的元素就是第 k 大的元素

代码实现

var findKthLargest = function (nums, k) {
  const pq = new MinPriorityQueue()

  //把数字入队列
  nums.forEach(num => pq.enqueue(num))
  
  //把第k个后面的出队列
  while (pq.size() > k) pq.dequeue()

  return pq.dequeue()['priority']
};

如有错误欢迎指出,欢迎一起讨论!