leetcode|leetcode215. 数组中的第K个最大元素
给定整数数组nums和整数k,请返回数组中第k个最大的元素。
请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。
示例:
?输入:[3, 2, 1, 5, 6, 4] 和 k = 2
?输出:5
思路:
寻找数组当中的第K大元素,有以下两个步骤:
- 先用数组当中的前K个元素构建小堆。
- 将数组当中剩余元素与堆顶元素进行比较,若比堆顶元素大,则将堆顶元素弹出,将该元素入堆,并对堆进行调整使其仍为小堆。
【leetcode|leetcode215. 数组中的第K个最大元素】代码如下:
class Solution {public:
int findKthLargest(vector& nums, int k) {//先用数组当中的前K个元素构建小堆
priority_queue, greater> q(nums.begin(), nums.begin() + k);
//处理数组剩余元素
for (size_t i = k;
i < nums.size();
i++)
{if (nums[i] > q.top()) //若比堆顶元素大
{q.pop();
//将堆顶元素弹出
q.push(nums[i]);
//将该元素入堆
}
}
return q.top();
//返回堆顶元素即为数组当中的第K个最大元素
}
};
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 数组常用方法一
- Java|Java基础——数组
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- JS常见数组操作补充
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- Leetcode|Leetcode No.198打家劫舍
- JS|JS 数组求和与数组求平均值