首页 > 其他分享 >DAY11 栈与队列part02

DAY11 栈与队列part02

时间:2024-09-08 20:36:48浏览次数:7  
标签:deque 元素 队列 part02 back que DAY11 front

 

 

逆波兰式求值

代码随想录 (programmercarl.com)

 1 class Solution {
 2 public:
 3     int evalRPN(vector<string>& tokens) {
 4     stack<long long> st;
 5     for(int i=0;i<tokens.size();i++)
 6     {
 7         
 8         if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")//双引号
 9         {
10             long long nums1=st.top();
11             st.pop();
12             long long nums2=st.top();
13             st.pop();
14             long long res;
15             if(tokens[i]=="+") res=nums1+nums2;
16             if(tokens[i]=="-") res=nums1-nums2;
17             if(tokens[i]=="*") res=nums1*nums2;
18             if(tokens[i]=="/") res=nums2/nums1;//这里注意两个数的顺序
19             st.push(res);
20         }
21         else
22         {
23             st.push(stoll(tokens[i]));//表示long long精度转化
24         }
25     }
26     return (int)st.top();
27 }
28 };

 

 

滑动窗口最大值

代码随想录 (programmercarl.com)

 1 class Solution {
 2 private:
 3     class MYQUE{
 4         deque<int> que;
 5         public:
 6         void pop(int val)
 7         {
 8             if(!que.empty()&&que.front()==val) que.pop_front();
 9         }
10         void push(int val)
11         {
12             while(!que.empty()&&val>que.back())//这里不加等号,que里面某些数需要重复出现,否则窗口滑动会导致仅有的最大值弹出
13                 que.pop_back();
14             que.push_back(val);
15         }
16         int front()
17         {
18             return que.front();
19         }//要加上不然没有front对象
20     };
21 public:
22     vector<int> maxSlidingWindow(vector<int>& nums, int k) {
23         vector<int> res;
24         MYQUE  que;//类的写法
25         for(int i=0;i<k;i++)
26         {
27             que.push(nums[i]);
28         }
29         res.push_back(que.front());
30         for(int i=k;i<nums.size();i++)
31         {
32             que.pop(nums[i-k]);
33             que.push(nums[i]);
34             res.push_back(que.front());
35         }
36         return res;
37     }
38 };

一、deque的简介
deque是一个双向队列(double-ended queue),可以在队列的两端进行元素的插入和删除操作。deque的全称是double-ended queue,翻译过来就是双端队列,也有人称之为双向队列,这两个名称都可以表示该数据结构。deque是C++STL(标准模板库)中的一种容器,可以用于存储各种类型的元素。deque的特点是可以在队列的两端进行元素的操作,并且可以高效地在队列的任意位置进行元素的插入和删除操作。
可以说deque几乎涵盖了queue(队列)、stack(堆栈)、vector(向量 )等的全部用法,功能非常的强大。

使用queue时需要包含头文件:

#include<deque>

二、deque的常用成员函数

push_back()//在队列的尾部插入元素。
emplace_front()//与push_front()的作用一样 
push_front()//在队列的头部插入元素。
emplace_back()//与push_back()的作用一样 
pop_back()//删除队列尾部的元素。
pop_front()//删除队列头部的元素。
back()//返回队列尾部元素的引用。
front()//返回队列头部元素的引用。
clear()//清空队列中的所有元素。
empty()//判断队列是否为空。
size()//返回队列中元素的个数。
begin()//返回头位置的迭代器
end()//返回尾+1位置的迭代器
rbegin()//返回逆头位置的迭代器 
rend()//返回逆尾-1位置的迭代器 
insert()//在指定位置插入元素 
erase()//在指定位置删除元素 

 

标签:deque,元素,队列,part02,back,que,DAY11,front
From: https://www.cnblogs.com/xzdmzrc221202/p/18403342

相关文章

  • Day04 链表part02| LeetCode 24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个,160.
    两两交换链表中的节点24.两两交换链表中的节点classSolution{publicListNodeswapPairs(ListNodehead){//设置虚拟头节点ListNodedummy=newListNode(0,head);ListNodecur=dummy;while(cur.next!=null&......
  • FreeRTOS 队列 Queue 源码解析
    目录一、队列1、队列结构体2、队列类型二、队列相关操作1、初始化1.1静态创建队列1.2动态创建队列1.3队列的初始化1.4队列的重置2、队列的发送2.1任务级入队函数2.1.1入队函数2.1.2队列锁2.1.3portYIELD_WITHIN_API2.2中断级入队函数3、任务的读取3.1任务......
  • 【代码随想录Day10】栈与队列Part01
    232.用栈实现队列题目链接/文章讲解/视频讲解:用栈实现队列classMyQueue{Stack<Integer>stackIn;Stack<Integer>stackOut;publicMyQueue(){stackIn=newStack<>();stackOut=newStack<>();}publicvoidpush(int......
  • 【代码随想录Day9】字符串Part02
    151.翻转字符串里的单词解题思路如下:移除多余空格将整个字符串反转将每个单词反转举个例子,源字符串为:"theskyisblue"移除多余空格:"theskyisblue"字符串反转:"eulbsiykseht"单词反转:"blueisskythe"题目链接/文章讲解/视频讲解:代码随想录publicclassS......
  • 【洛谷 P1996】约瑟夫问题 题解(队列+模拟+循环)
    约瑟夫问题题目描述个人围成一圈,从第一个人开始报数,数到的人出列,再由下一个人重新从开始报数,数到的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰名小朋友,而该题是全部出圈。输入......
  • 多线程篇(阻塞队列- BlockingQueue)(持续更新迭代)
    目录一、了解什么是阻塞队列之前,需要先知道队列1.Queue(接口)二、阻塞队列1.前言2.什么是阻塞队列3.Java里面常见的阻塞队列三、BlockingQueue(接口)1.前言2.简介3.特性3.1.队列类型3.2.队列数据结构2.简介4.核心功能入队(放入数据)出队(取出数据)总结四......
  • 【Linux修行路】基于阻塞队列的生产消费者模型
    目录⛳️推荐一、生产消费者模型1.1生产消费者模型的解藕特性二、基于BlockingQueue的生产消费者模型2.1单生产单消费模型2.2伪唤醒、误唤醒造成的问题2.3基于任务的多生产多消费模型⛳️推荐前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一......
  • Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o
    文本目录:❄️一、栈(Stack):  ▶1、栈的概念: ▶ 2、栈的使用和自实现:   ☑1)、Stack():   ☑2)、push(Ee):   ☑3)、empty():     ☑4)、peek(Ee):     ☑5)、pop(Ee):    ☑6)、size(Ee): ▶3、栈自实现的总代码:......
  • 数据结构与算法(3)栈和队列
    1.前言哈喽大家好啊,今天博主继续为大家带来数据结构与算法的学习笔记,今天是关于栈和队列,未来博主会将上一章《顺序表与链表》以及本章《栈与队列》做专门的习题应用专题讲解,都会很有内容含量,欢迎大家多多支持,你的鼓励是我最大的动力,我们码上见!2.正文2.1栈2.1.1结构定义......
  • 【每日刷题】Day112
    【每日刷题】Day112......