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

剑指 Offer Day1——栈与队列(简单)

本专栏将记录《剑指 Offer》的刷题,传送门:https://leetcode.cn/study-plan/lcof/。

目录

  • 剑指 Offer 09. 用两个栈实现队列
  • 剑指 Offer 30. 包含min函数的栈

剑指 Offer 09. 用两个栈实现队列

原题链接:09. 用两个栈实现队列

class CQueue {
public:stack<int> s1, s2;  // s1为主栈,s2为辅助栈CQueue() {}void appendTail(int value) {s1.push(value);}int deleteHead() {if (s1.empty()) return -1;else {copy(s1, s2);int t = s2.top();s2.pop();copy(s2, s1);return t;}}// 将x的所有元素压入yvoid copy(stack<int> &x, stack<int> &y) {while (!x.empty()) {y.push(x.top());x.pop();}}
};

剑指 Offer 30. 包含min函数的栈

原题链接:30. 包含min函数的栈

同样设置两个栈,s1 为主栈用来存储数据,s2 为最小栈用来存储最小值。

class MinStack {
public:stack<int> s1, s2;  // s1是主栈,s2是最小栈MinStack() {s2.push(INT_MAX);}void push(int x) {s1.push(x);s2.push(std::min(x, s2.top()));}void pop() {s1.pop();s2.pop();}int top() {return s1.top();}int min() {return s2.top();}
};

一个直观的例子:

s1:[3,5,6,1,4,0,2,7]s2:[INT_MAX,3,3,3,1,1,0,0,0]\begin{aligned} s_1:\quad [&3,5,6,1,4,0,2,7] \\ s_2:\quad [\text{INT\_MAX},\, &3, 3,3,1,1,0,0,0] \end{aligned} s1:[s2:[INT_MAX,3,5,6,1,4,0,2,7]3,3,3,1,1,0,0,0]

列表左端为栈底,右端为栈顶。

http://www.lryc.cn/news/3944.html

相关文章:

  • 详解Python正则表达式中group与groups的用法
  • Spring面试重点(三)——AOP循环依赖
  • 计算机网络之HTTP04ECDHE握手解析
  • 【MySQL数据库】主从复制原理和应用
  • 复现随记~
  • 【计组】设计大型DMP系统--《深入浅出计算机组成原理》(十四)
  • 66 使用注意力机制的seq2seq【动手学深度学习v2】
  • NextJS(ReactSSR)
  • JointBERT代码复现详解【上】
  • 进程间通信(上)
  • 【Unity3D】Unity 3D 连接 MySQL 数据库
  • vue通用后台管理系统
  • IDEA设置只格式化本次迭代变更的代码
  • 算法训练——剑指offer(Hash集合问题)
  • Element UI框架学习篇(七)
  • 【项目实战】32G的电脑启动IDEA一个后端服务要2min!谁忍的了?
  • 2022年山东省中职组“网络安全”赛项比赛任务书正式赛题
  • RibbitMQ 入门到应用 ( 二 ) 安装
  • 提取DataFrame中每一行的DataFrame.itertuples()方法
  • 基于卷积神经网络的立体视频编码质量增强方法_余伟杰
  • 【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现
  • 跨域的几种解决方案?
  • 2022年山东省职业院校技能大赛网络搭建与应用赛项正式赛题
  • 【JUC并发编程】ArrayBlockingQueue和LinkedBlockingQueue源码2分钟看完
  • GitHub个人资料自述与管理主题设置
  • Express篇-连接mysql
  • win10 安装rabbitMQ详细步骤
  • 【成为架构师课程系列】一线架构师:6个经典困惑及其解法
  • 光耦合器的定义与概述
  • 谷粒商城--品牌管理详情