当前位置: 首页 > news >正文

C++ priority_queue 优先队列构造大根堆和小根堆

priority_queue的三个参数

template <class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type>>
class priority_queue;

1、元素类型
2、底层容器类型,默认vector
3、比较函数(传入的是一个类型):小根堆greater<T>大根堆less<T>

常用于求解 数组中第K个最大元素(复杂度O(n)),前K个高频元素 等问题。

例如,求数组中第K个最大元素的三种写法:

class Solution {
public:class mycompare{public:bool operator()(const int& left, const int& right){return left < right;}};static bool mycompare2(const int& left, const int& right) {return left < right;}int findKthLargest(vector<int>& nums, int k) {//优先队列:大根堆解法(根节点大于子节点)priority_queue<int, vector<int>, mycompare> pq;priority_queue<int, vector<int>, decltype(&mycompare2)> pq(mycompare2);priority_queue<int, vector<int>, less<int>> pq;for (int i = 0; i < nums.size(); i++) {pq.push(nums[i]);}for (int i = 0; i < k-1; i++){pq.pop();}return pq.top();}
};
http://www.lryc.cn/news/453856.html

相关文章:

  • 音视频入门基础:FLV专题(9)——Script Tag简介
  • Vue页面,基础配置
  • (杨辉三角) 攻防世界--->notsequence
  • 【CTF Web】Pikachu CSRF(get) Writeup(CSRF+GET请求+社会工程学)
  • 智能工厂的软件设计 作为“程序Program”的中台 之2
  • GB28181信令交互流程及Android端设备对接探讨
  • OpenCV视频I/O(14)创建和写入视频文件的类:VideoWriter介绍
  • c语言学习(书本目录)
  • 2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程
  • 衍生品交易的隐藏风险:认识CCR和xVA
  • 我的项目管理生涯
  • ChatGPT Canvas:交互式对话编辑器
  • [Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法
  • Python使用Selenium动态爬取CSDN社区帖子的URL链接
  • 【ShuQiHere】双系统指南:如何在 Linux 系统情况下安装 Windows 11,处理引导与网络问题 ️
  • jQuery EasyUI 扩展
  • 408算法题leetcode--第24天
  • 【CKA】二、节点管理-设置节点不可用
  • STM32中断编程指南:NVIC和中断优先级
  • ThreadLocal底层原理及数据结构详解
  • Android Framework AMS(02)AMS启动及相关初始化5-8
  • 速盾:游戏被攻击怎么办?
  • BUU刷题-Pwn-shanghai2018_baby_arm(ARM_ROP_csu_init,ARM架构入门)
  • flutter_鸿蒙next(win)环境搭建
  • 腾讯一面-LRU缓存
  • k8s实战-1
  • Python进程池:提升你的并发性能
  • 内存占用估算方法
  • 拓扑排序简介
  • 使用iTextPDF库时,设置文字为中文格式