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

stack和queue专题

文章目录

  • stack
    • 最小栈
      • 题目解析
      • 代码
    • 栈的压入弹出序列
      • 题目解析
      • 代码
  • queue
    • 二叉树的层序遍历
      • 题目解析
      • 代码

stack

stack和queue都是空间适配器

在这里插入图片描述

最小栈

最小栈的题目链接

在这里插入图片描述

题目解析

  • minst是空就进栈,或者是val <= minst.top()就进栈
    在这里插入图片描述

代码

class MinStack {
public:MinStack() {}void push(int val) {st.push(val);if(minst.empty() || val <= minst.top()){minst.push(val);}}void pop() {if(st.top() == minst.top()){minst.pop();}    st.pop();}int top() {return st.top();    }int getMin() {return minst.top();    }
private:stack<int> st;stack<int> minst;
};

栈的压入弹出序列

栈的压入弹出序列

在这里插入图片描述

题目解析

1.入栈序列入栈一个值(一个一个地入栈)
2.栈顶元素跟出栈序列是否匹配,持续出
3.不匹配看入栈是否已经入完了,没有入完继续入,入完了就结束了

在这里插入图片描述

代码

class Solution 
{
public:bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {size_t popi = 0;stack<int> st;for(auto& ch : pushV){// 入栈st.push(ch);// 入栈和出栈元素匹配// 栈不为空取栈顶元素,一种特殊情况// 1,2,3,4,5  4,3,2,1,5// 栈会为空,不加!st.empty(),会崩溃// 持续出栈while(!st.empty() && st.top() == popV[popi]){st.pop();++popi;}}// 如果栈为空就返回true,都出完了// 如果栈为假就返回false,popV出不了了,就不匹配return st.empty();}
};

queue

在这里插入图片描述

二叉树的层序遍历

二叉树的层序遍历

在这里插入图片描述

题目解析

根节点出队列,把根节点的孩子入队列
1.设置一个变量记录当前层的节点个数
2.一层一层出,队列的size就是当前层的size
因为出一个节点就把它的孩子带入,只有它的孩子在队列中,所以队列的size就是当前层的levelSize

在这里插入图片描述

代码

class Solution 
{
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> vv;queue<TreeNode*> q;size_t levelSize = 0;if(root){q.push(root);levelSize = 1;}while(!q.empty()){vector<int> v;while(levelSize--){TreeNode* front = q.front();v.push_back(front->val);q.pop();if(front->left)q.push(front->left);if(front->right)q.push(front->right);}            vv.push_back(v);levelSize = q.size();}return vv;}
};
http://www.lryc.cn/news/521123.html

相关文章:

  • 【Vue】点击侧边导航栏,右侧main对应显示
  • 【Debug】django.db.utils.OperationalError: (1040, ‘Too many connections‘)
  • 如何开放2375和2376端口供Docker daemon监听
  • RabbitMQ确保消息可靠性
  • 前端常见的设计模式之【单例模式】
  • 【React】脚手架进阶
  • win32汇编环境,窗口程序中单选框的一般操作示例
  • 如何移除git中被跟踪的commit文件
  • 结合night compute分析 利用tensor core 优化K值较大的矩阵乘(超过cublas50%)
  • Docker 部署 Typecho
  • 【大数据】机器学习-----模型的评估方法
  • 【Excel笔记_3】execl的单元格是#DIV/0!,判断如果是这个,则该单元格等于空
  • FPGA EDA软件的位流验证
  • 信号与系统初识---信号的分类
  • 信号量机制之苹果-橘子问题
  • 三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标
  • Nacos: 一个动态服务发现与配置管理平台
  • 认识机器学习中的结构风险最小化准则
  • 计算机网络 (35)TCP报文段的首部格式
  • ubuntu24.04安装docker显卡工具包nvidia-container-toolkit
  • rknn环境搭建之docker篇
  • OpenCV相机标定与3D重建(56)估计物体姿态(即旋转和平移)的函数solvePnPRansac()的使用
  • vue倒计时组件封装,根据每个循环项的倒计时是否结束添加新类名。
  • 缩放 对内外参的影响
  • SQL面试题2:留存率问题
  • 晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)
  • 【EtherCATBridge】- KRTS C++示例精讲(9)
  • C++实现设计模式--- 观察者模式 (Observer)
  • iOS 解决两个tableView.嵌套滚动手势冲突
  • Lianwei 安全周报|2025.1.13