永春网站开发,做网站的像素是多少钱,建立个人博客网站wordpress,科技部网站堆排序
前言 面试中著名的 TopK 排序#xff1b;常见的解法有冒泡排序、堆排序#xff1b;更深入的思路可以参考#xff1a;拜托#xff0c;面试别再问我TopK了#xff01;#xff01;#xff01;使用了堆排序的算法#xff0c;关于堆可以参考#xff1a;堆数据结构的…堆排序
前言 面试中著名的 TopK 排序常见的解法有冒泡排序、堆排序更深入的思路可以参考拜托面试别再问我TopK了使用了堆排序的算法关于堆可以参考堆数据结构的C实现思路 使用一个 size k 小顶堆之后的元素如果大于堆顶则将堆顶 pop 后将此元素入堆遍历完成后堆顶即为 TopK 元素使用了 stl 的优先队列数据结构默认是大顶堆小顶堆的构造为 std::priority_queueint, std::vectorint, std::greaterint
class Solution {
public:int findKthLargest(vectorint nums, int k) {std::priority_queueint, std::vectorint, std::greaterint pq;int size nums.size();for (int i 0; i size; i) {if (i k) {pq.push(nums[i]);} else {if (nums[i] pq.top()) {pq.pop();pq.push(nums[i]);}}}return pq.top();}
};