题目
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
来源:力扣(LeetCode)leetcode-cn.com/problems/kt…
解题思路
- 通过最小优先队列解题
- 把数组中的元素依次入队列
- 把第 k 个后面的元素都出队列
- 再次出队列的元素就是第 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']
};
如有错误欢迎指出,欢迎一起讨论!