栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

栈,队列和堆模板总结

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

栈,队列和堆模板总结

栈,队列和堆

栈和队列是容器适配器 也就是底层容器加上接口,默认底层实现是deque。

不提供走访功能,也不提供迭代器

//栈
stack s
s.push()
s.pop()
s.top()
    
//队列
queue q//双端队列 dequeq
q.push()//q.push_front(),q.push_back()
q.pop()//q.pop_front(),q.pop_back()
q.front()
q.back()
    
//优先队列
//既然是队列那么先要包含头文件#include , 和queue不同就在可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队
//优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的

top() //访问队头元素
push() //插入元素到队尾 (并排序)
emplace() //原地构造一个元素并插入队列
pop() //弹出队头元素
swap()//交换内容
    
然后都有empty()和size()以及clear()操作

一般:

栈:翻转顺序,相邻元素依次比较

151. 翻转字符串里的单词

单调栈模板:有递增和递减

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置

//留在栈中的元素一定是有序的
string sstk(vector& num) {
        vectorstk;
        for (int i = 0; i < num.size(); ++i) {
            while(!stk.empty()&&num[i] 
402. 移掉 K 位数字 
739. 每日温度 
503. 下一个更大元素 II 
42. 接雨水 

优先队列模板

//经典求第k大

class Solution {
public:
    int findKthLargest(vector& nums, int k) {
        int res;
        priority_queueq;
        for(int i=0;i0;i--){
            q.pop();
        }
        return q.top();
    }
};

面试题 17.14. 最小K个数

单调队列模板:

 

未完待续…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/528943.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号