【题目】栈和队列专题

news2024/9/27 12:37:51

文章目录

  • 专题一:栈系列
    • 1. 中缀表达式转后缀表达式(逆波兰式)
    • 2. 有效的括号
    • 3. 用栈实现队列
    • 4. 最小栈

专题一:栈系列


1. 中缀表达式转后缀表达式(逆波兰式)


在这里插入图片描述

算法原理
在这里插入图片描述


2. 有效的括号


题目链接

算法原理

在这里插入图片描述

代码编写

class Solution 
{
public:
    bool isValid(string s) 
    {
        stack<char> st;
        for(const auto ch : s)
        {
            if(ch == '(' || ch == '[' || ch == '{') st.push(ch);
            else 
            {
                // 1、右括号多
                if(st.empty()) return false;

                char top = st.top();
                if(top == '(' && ch == ')' || top == '[' && ch == ']' || top == '{' && ch == '}') 
                    st.pop();
                else 
                    return false; // 2、括号不匹配
            }
        }

        return st.empty(); // 3、最后若栈为空,说明左括号全部正确匹配完成
    }
};

3. 用栈实现队列


题目链接

算法原理
在这里插入图片描述

代码编写

class MyQueue 
{
private:
    stack<int> st1; //负责入队列
    stack<int> st2; //负责出队列

public:
    // 构造函数,什么都不需要做
    MyQueue() 
    {}
    
    // 入队列
    void push(int x) 
    {
        st1.push(x);
    }
    
    // 出队列
    int pop() 
    {
        // 队列为空,则返回-1
        if(st1.empty() && st2.empty()) return -1;   
        // 若 st2 为空,则需要从 st1 中把元素更新过来
        if(st2.empty()) 
        {
            while(!st1.empty()) 
            {
                st2.push(st1.top());
                st1.pop();
            }
        }
        //  st2 栈顶元素即使队列的对首元素,删除即可
        int ans = st2.top();
        st2.pop();
        return ans;
    }
    
    int peek() 
    {
        // 队列为空,则返回-1
        if(st1.empty() && st2.empty()) return -1;
        // 若 st2 为空,则需要从 st1 中把元素更新过来
        if(st2.empty())
        {
            while(!st1.empty()) 
            {
                st2.push(st1.top());
                st1.pop();
            }
        }
        //  st2 栈顶元素即使队列的对首元素,返回即可
        return st2.top();
    }
    
    // 队列判空
    bool empty() 
    {
        return st1.empty() && st2.empty();
    }
};

4. 最小栈


题目链接

算法原理
在这里插入图片描述

代码编写

class MinStack 
{
private:
    stack<int> st;   //存放栈元素
    stack<int> minSt;//存放st中,最小元素序列

public:
    // 默认构造函数
    MinStack() 
    {}
    
    // 栈中插入元素
    void push(int val) 
    {
        st.push(val);
        // 1、若最小栈为空(说明是第一个插入元素),此时 val 直接入最小栈
        // 2、若最小栈不为空,则比较最小栈栈顶元素,再决定是否插入最小栈
        if(minSt.empty()) minSt.push(val);
        else
        {
            if(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();
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1284354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp:如何使用uCharts

目录 第一章 前言 第二章 安装插件uCharts 第三章 使用uCharts 第四章 注意 第一章 前言 需求&#xff1a;这是很久之前的一个项目的需求了&#xff0c;当时我刚接触app&#xff0c;有这么一个需求&#xff0c;在uniapp写的app项目中做一些图表统计&#xff0c;最开始以为…

基础堆溢出原理与DWORD SHOOT实现

堆介绍 堆的数据结构与管理策略 程序员在使用堆时只需要做三件事情&#xff1a;申请一定大小的内存&#xff0c;使用内存&#xff0c;释放内存。 对于堆管理系统来说&#xff0c;响应程序的内存使用申请就意味着要在"杂乱"的堆区中"辨别"出哪些内存是正在…

登录校验过滤器

会话技术 JWT令牌 过滤器Filter 拦截器 interceptor cookise package com.it.controller;import com.it.pojo.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Re…

密集书库是什么意思?图书馆密集书库的书可以借出吗

密集书库是一种用于存储大量书籍和资料的高密度储存设施。它通常包括一系列钢制书架和可移动的储存架&#xff0c;使得书籍可以被紧密地排列和存储&#xff0c;以最大程度地利用存储空间。同时&#xff0c;密集书库还有各种自动化系统&#xff0c;如自动化取书系统、气候控制系…

bad_python

攻防世界 (xctf.org.cn) 前戏 下载文件&#xff0c;解压完成后是这个 一个pyc文件 这里要用到python的反编译 要用到的工具有两个 1.python自带的uncompyle6 2.pycdc文件——比uncompyle6强大一点 我们一个一个来尝试一下 uncompyle6&#xff1a; 我是直接在pycharm里面…

骨传导耳机音量大了有害吗?骨传导能保护听力吗?

无论是传统耳机还是骨传导耳机&#xff0c;只要使用音量过大&#xff0c;都会对有一定的损伤&#xff0c;然而由于骨传导耳机的传声原理和佩戴方式比较特殊&#xff0c;所以对人体的损伤比较小&#xff0c;想要知道骨传导耳机能否保护听力&#xff0c;就要先了解骨传导耳机的传…

Day50力扣打卡

打卡记录 三个无重叠子数组的最大和 链接 滑动窗口 class Solution:def maxSumOfThreeSubarrays(self, nums: List[int], k: int) -> List[int]:n, ans len(nums), []sum1 sum2 sum3 0maxsum1idx, maxsum12idx 0, ()maxsum1 maxsum12 total 0for i in range(2 * …

Mybatis-Plus代码生成器怎么用

下载插件 连接数据库 打开代码生成器 生成代码

几何对象的凸点集

// 引入VTK并初始化 #include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkActor.h> #include <vtkCamera.h> #include <vtkConvexPointSet.h> #include <vtkDataSetMapper.h&g…

259k+ Star!这是我见过最全的开发者技术学习路线!

大家好&#xff0c;我是 Java陈序员。 自从上班后&#xff0c;身体是一天不如一天了&#xff0c;也很少有时间可以去学习新技术了。程序员如果技术跟不上&#xff0c;很容易就被淘汰。 而碎片化的学习效率又不高&#xff0c;往往今天学了&#xff0c;明天就忘了。有时候更是不…

同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client接收数据

所需设备&#xff1a; 内附链接 1、USB转SPI_I2C适配器(专业版); 首先&#xff0c;连接W5500模块与同旺科技USB TO SPI / I2C适配器&#xff0c;如下图&#xff1a; 发送数据6个字节的数据&#xff1a;0x11,0x22,0x33,0x44,0x55,0x66 在专业版调试软件中编辑指令&#xff0c…

金融帝国实验室(Capitalism Lab)V10版本城市DLC生存模式新改进

金融帝国实验室&#xff08;Capitalism Lab&#xff09;V10版本城市DLC生存模式新改进 ————————————— ★【全新V10版本开发播报】★ 即将发布的V10版本中的城市经济模拟DLC生存模式改进&#xff1a; ◈ 增加了一个新选项&#xff0c;将第一个城市的初始人口设置为…

Android wifi 框架以及Enable流程

Android P相比于Android O的变化 多了WifiStateMachinePrime&#xff08;状态机的前处理机制&#xff09;&#xff0c;wifiService的相关cmd 不再是直接send 给WifiStateMachine&#xff0c;而是被送到WifiStateMachinePrime先进行处理后&#xff0c;再送往WifiStateMachine也…

【带头学C++】----- 九、类和对象 ---- 9.3 析构函数

目录 9.3 析构函数 9.3.1 如何定义析构函数 看下面这个顺序进行释放&#xff0c;{} 代表一个生命周期&#xff0c;或者说作用域。 对象在生命周期结束就会消亡。 9.3 析构函数 9.3.1 如何定义析构函数 函数名和类名称相同&#xff0c;在函数名前加 ~ &#xff0c;没有返回…

uniapp开发小程序经验记录

uniapp开发小程序的过程中会遇到很多问题&#xff0c;这里记录一下相关工具优化&#xff0c;便于后来者参考。 每次保存代码后&#xff0c;小程序都跳回首页 针对这个问题&#xff0c;常规的做法就是修改pages配置文件&#xff0c;但是这种方式不便于路由参数的设置&#xff…

vue3 中使用 sse 最佳实践,封装工具

工具 // 接受参数 export interface SSEChatParams {url: string,// sse 连接onmessage: (event: MessageEvent) > void,// 处理消息的函数onopen: () > void,// 建立连接触发的事件finallyHandler: () > void,// 相当于 try_finally 中的 finally 部分&#xff0c;不…

用户态和内核态

实际上任何Linux发行版(Centos/RedHat....)&#xff0c;其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。为了避免用户应用导致冲突甚至内核崩溃&#xff0c;用户应用与内核是分离的&#xff1a; 进程的寻址空间会划分为两部分&#xff1a;内核空间、用户空间。…

虾皮数据分析网站:了解Shopee市场趋势与优化运营的利器

在如今的电商时代&#xff0c;越来越多的人选择在虾皮购物&#xff08;Shopee&#xff09;平台上开设自己的店铺。然而&#xff0c;要在这个竞争激烈的市场中脱颖而出并取得成功&#xff0c;并不是一件容易的事情。为了更好地了解市场趋势、优化产品和店铺运营&#xff0c;了解…

百度地图取点 范围绘制 画范围 手工绘制范围

<template><div class"app-container"><div style"margin-bottom:30px"><el-input type"textarea" :rows"2" placeholder"请输入内容" v-model"str"></el-input></div><d…

基于SSM框架的网上书店系统

基于SSM框架的网上书店系统 文章目录 基于SSM框架的网上书店系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 随着互联网的普及和电子商务的快速发展&#xff0c;网上书店系统成为了现代人购买图书的主要方式之一。网上书店系统不仅提供了便捷的…