首页 > 其他分享 >队列

队列

时间:2024-11-21 22:21:48浏览次数:1  
标签:队列 back 123 push 对头 dq

前言

先进先出,没啥好说的

STL queue

#include <bits/stdc++.h>
using namespace std;
int main()
{
    queue<int> q;
    q.push(12);                // 12进入队列
    q.push(13);                // 13进入队列
    q.push(123);               // 123进入队列
    cout << q.front() << endl; // 返回队首值
    q.pop();                   // 删除队首值
    cout << q.back() << endl;  // 返回队尾值
    cout << q.size() << endl;  // 返回元素个数
    if (!q.empty())            // 检查是否为空
    {
        cout << "Y" << endl;
    }
    return 0;
}
/*输出
12
123
2
Y*/

STL deque

#include <bits/stdc++.h>
using namespace std;
int main()
{
    deque<int> dq;
    dq.push_back(123);          // 对尾加入123
    dq.push_front(321);         // 对头加入321
    dq.push_front(111);         // 对头加入111
    cout << dq[1] << endl;      // 返回坐标为1的值
    cout << dq.front() << endl; // 返回队头的值
    cout << dq.back() << endl;  // 返回队尾的值
    return 0;
}
/*
输出
321
111
123*/

单调队列

三个重要元素:

  • 对头
  • 队尾
  • 窗口(区间)

两个重要操作:

  • 删头:如果对头脱离窗口,则元素无用,删去
  • 去尾:如果新元素入队,原队尾破坏了单调性删去
for (int i = 1; i <= n; i++) // 滑动窗口 输出最小值
 {
   while (q.size() && a[q.back()] > a[i])
        q.pop_back(); // 去尾
   q.push_back(i);
   if (i >= k)
   {
        while (q.size() && q.front() <= i - k)
            q.pop_front(); // 删头
   }
}

题目

P1540
简单单调队列

标签:队列,back,123,push,对头,dq
From: https://www.cnblogs.com/-include-lmt/p/18561665

相关文章

  • 【c++丨STL】priority_queue(优先级队列)的使用与模拟实现
    ......
  • 用Redis实现去重的任务队列的多种方案
    前情提要:一点小小的不完善的方案的思考和设计,不对的地方或是更好的方案欢迎大佬们在评论区讨论~需求背景:在Redis里使用List数据结构做任务队列,但是有的时候任务可能会重复添加,所以需要进行去重。队列需要有优先级,尽量减少Redis操作次数。尝试方案目前能够想到的方案......
  • 【数据结构】栈和队列的定义与实现
    主页:HABUO......
  • 前K个高频元素——栈与队列
    先放代码:classSolution{public:classmycomperation{public://注意这里的问题booloperator()(constpair<int,int>&lhs,constpair<int,int>&rhs){returnlhs.second>rhs.second;}};vect......
  • 滑动窗口最大值——栈与队列
    第一版代码:classSolution{private:classMyQueue{//单调队列(从大到小)public:deque<int>que;//使用deque来实现单调队列//每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。//同时pop之前判断队列当......
  • LeetCode题练习与总结:根据身高重建队列--406
    一、题目描述假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i]=[hi,ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返......
  • 2024/11/19日 日志 数据结构实验(2)---栈实现表达式求值、队列应用(蓝桥杯)
    栈实现表达式求值问题:https://pintia.cn/problem-sets/1858366427985383424/exam/problems/type/7?problemSetProblemId=1858366732315615232解答:点击查看代码#include<bits/stdc++.h>usingnamespacestd;//运算符优先级intprecedence(charop){switch(op){......
  • JUC-阻塞队列
    JUC-阻塞队列1、阻塞队列概述2、ArrayBlockingQueue阻塞队列2.1ArrayBlockingQueue架构图2.2ArrayBlockingQueue源码如有侵权,请联系~如有错误,也欢迎批评指正~1、阻塞队列概述阻塞队列在业务代码中可能较少使用,但是只要喜欢看源码的同学就会发现,阻塞队列使用的很......
  • 【高贵的数据结构】学了python你一定要知道的知识之deque双端队列
    deque是Python的collections模块提供的一种双端队列数据结构,支持从队列的两端快速添加和删除元素,时间复杂度为(O(1))。与列表相比,它在高效的双端操作中有明显优势。1.导入dequefromcollectionsimportdeque2.初始化deque创建空队列dq=deque()print(......
  • 逆波兰表达式求值——栈与队列
    首先是第一次的代码classSolution{public:intevalRPN(vector<string>&tokens){stack<longlong>str;for(inti=0;i<tokens.size();i++){if(tokens[i]!="+"&&tokens[i]!=......