栈相关的算法

news2025/1/12 2:48:57

抽象:

不能处理的信息:暂时入栈。

能处理的信息:从栈里面选择信息,加工处理,并出栈。

一、括号匹配算法

左括号等待匹配,所以入栈等待匹配。

右边括号就要判断是否匹配,所以判断是否匹配并出栈。

左边:

1. 进栈等待匹配

右边括号匹配有以下情况:

1. 能够刚好匹配

2. 不能匹配

3. 左边括号用完了无法匹配

  bool isValid(string s) {
        for(auto i : s)
        {
            if(i == '(' || i == '{' || i == '[') 
            {
                left.push(i);
                continue;
            }

            if((i == ')' || i == ']' || i == '}') && !left.empty() && ispair(left.top(),i))
            {
                left.pop();
                continue;
            }

            if((i == ')' || i == ']' || i == '}') && left.empty()) return false;


            if((i == ')' || i == ']' || i == '}') && !ispair(left.top(),i)) return false;
        }
        return left.empty()?true:false;
    }

二、最小栈

常数时间拿到最小值的栈,普通栈,然后再来一个栈保存当前的最小值。

  MinStack() {
        mistack.push(_min);;
    }
    
    void push(int val) {
        opstack.push(val);

        _min = min(val,mistack.top());

        mistack.push(_min); 
    }

三、字符串解码

总结:对于栈暂时还不可以处理的信息存起来,可以处理时出栈处理。

例如第一个左括号前面是3"",入栈,第二次入栈a 2,入栈

第三次暂时的tmp是c,同时匹配到了右边括号,处理信息,a+2*c = acc,出栈

第四次匹配到了右括号继续计算 “”+3*acc = accaccacc,出栈

 string decodeString(string s) {
        for(auto i : s)
        {
            if(i>='a' && i <= 'z') res += i;
            if(i-'0' >=0 && i - '0' <= 9) nums+=i;
            if(i == '[' ) 
            {
                opstack.push({atoi(nums.c_str()),res});
                res = ""; 
                nums = "";   
            } 
            if(i == ']') {
                t_ans = cacul(res,opstack.top());
                opstack.pop();
                res = t_ans;
                nums = "";
            }
        }
        return res;
    }

四、每日温度

维护一个单调递减的单调栈,每当出现更大的气温则说明了之前的值已经找到了答案。

其实和之前的思路一样,不能处理的信息先入栈,能处理了就出栈处理。

比如73,不能处理,入栈

74,处理1,出栈73,入栈74

.....

stack<pair<int,int>> reduce_stack;

    vector<int> dailyTemperatures(vector<int>& temperatures) {
        vector<int> ans(temperatures.size(),0);
        reduce_stack.push({-1,INT_MAX});
        for(int i = 0 ; i < temperatures.size() ; i ++)
        {
            while(temperatures[i] > reduce_stack.top().second)
            {
                ans[reduce_stack.top().first] = i - reduce_stack.top().first;
                reduce_stack.pop();
            }
            reduce_stack.push({i,temperatures[i]});
        }

        return ans;    
    }

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

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

相关文章

如何设置PowerBI报告展示在屏幕的大小?

问题描述: 业务部门同事反馈&#xff0c;将开发的Power BI报告发布到Power BI服务站点后&#xff0c;用户通过不同尺寸的电子设备打开报告看到的效果不一样&#xff0c;如用PC打开报告可以在一屏中完整显示所有报告可视化组件如图&#xff1a; 但是用手机或者PAD类小尺寸电子设…

【好书推荐】值得深读的EMC参考书籍

以下排序不分先后&#xff0c;都是好书&#xff01; 书名&#xff1a;Electromagnetic Compatibility Engineering 作者&#xff1a;Henry W. Ott 这本书的讨论重点放在了经济高效的EMC设计上&#xff0c;并将数学的数量和复杂度保持在最低限度&#xff0c;辅以 250 多个带有…

【Qt笔记】Qt建立UDP通信

目录 一、前言 二、服务端 ①在项目配置文件中加入network模板 ②创立一个继承自QObject的UdpServer的类 ③构造函数的实现 ④读取信息函数的实现 三、客户端 ①绑定服务端的IP地址和端口号 ②发送数据报给服务端 四、实现效果 一、前言 UDP&#xff08;User Datagr…

流苏马兜铃Aristolochia fimbriata参考基因组

推荐官网&#xff0c;一个和无油樟一样没发生过全基因组复制事件的代表性物种。 文章同链接 如何获取mostly单拷贝和strictly单拷贝基因 Insights into angiosperm evolution, floral development and chemical biosynthesis from the Aristolochia fimbriata genome https:…

微服务CI/CD实践(一)环境准备及虚拟机创建

微服务CI/CD实践系列&#xff1a; 微服务CI/CD实践&#xff08;一&#xff09;环境准备及虚拟机创建 微服务CI/CD实践&#xff08;二&#xff09;gitlabs部署 微服务CI/CD实践&#xff08;三&#xff09;nexus3部署 微服务CI/CD实践&#xff08;四&#xff09;数据库,redis,n…

天猫商品评论API:获取商品热门评价与最新评价

天猫&#xff08;Tmall&#xff09;作为中国最大的B2C电商平台之一&#xff0c;提供了丰富的商品和服务。然而&#xff0c;天猫并没有直接公开一个通用的API来允许第三方开发者直接获取商品的热门评价或最新评价。这主要是出于保护用户隐私、防止恶意抓取和滥用数据等考虑。 不…

SpringIoCDI

前言&#x1f440;~ 上一章我们介绍了Spring MVC&#xff0c;今天介绍Spring核心功能之一IoC Spring到底是什么&#xff1f; Spring IoC 什么是 IoC 容器&#xff1f; IoC 介绍 DI 介绍 IoC详解 获取Bean对象的其他方式 Bean的存储 方法注解 Bean 扫描路径 DI详解 …

计算机网络——TCP协议与UDP协议详解(下)

一、TCP协议 1.1 TCP协议的报文 TCP全称为 "传输控制协议(Transmission Control Protocol")。人如其名&#xff0c;要对数据的传输进行一个详细的控制。我们先看其报文格式&#xff0c;如下图&#xff1a; TCP报文由以下几个字段组成&#xff1a; 源端口号和目标端口…

【第三版 系统集成项目管理工程师】第13章 监控过程组

持续更新。。。。。。。。。。。。。。。 【第三版】第十三章 监控过程组 13.1控制质量13.1.1主要输入1.项目管理计划-P4992.项目文件-P4993.批准的变更请求-P5004.可交付成果-P5005.工作绩效数据-P500 13.1.2主要工具与技术1.数据收集-P5002.数据分析-P5003.检查-P5014.测试/…

数据结构—— 初识二叉树

1.树概念及结构 1.1树的概念 树是由根和子树构成 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 1. 树有…

安卓设备使用Linux运行Python sklearn进行机器学习. 2024-08-19

0. 测试环境 设备: 国美u7 系统: 安卓7.1(armv8a) 工具软件termux: Termux GitHub linux发行版: archlinux (aarch64) 1. Android手机安装termux (1)下载与安装termux : Releases termux/termux-app GitHub 根据设备处理器和系统框架选择适宜的最新版本. 这里我选择: …

krita安装krita_ai_diffusion插件后没有AI image generation

为krita 安装krita_ai_diffusion插件后却找不到AI image generation&#xff0c; 开始以为是插件安装问题&#xff0c;但发现插件安装是正确的&#xff1b; 既然安装正确&#xff0c;却看不到&#xff0c;应该是设置的问题&#xff0c;折腾了一下&#xff0c;发下是设置-》面板…

如何获取mostly单拷贝和strictly单拷贝基因

参考这篇文章的有意思的分析脚本~ 如何严格定义单拷贝基因的类型&#xff0c;值得思考。 Insights into angiosperm evolution, floral development and chemical biosynthesis from the Aristolochia fimbriata genome https://github.com/yihenghu/Aristolochia_fimbriata_…

数据驱动下的优化渠道管理与决策支持

在当今竞争激烈的市场环境中&#xff0c;渠道管理作为企业连接产品与消费者的重要桥梁&#xff0c;其效率与效果直接关系到企业的市场竞争力和可持续发展能力。随着大数据技术的广泛应用&#xff0c;数据驱动下的优化渠道管理与决策支持正成为企业提升管理效能、精准把握市场脉…

企业网站制作流程,企业网页怎么制作

​企业网站建设&#xff0c;需要对自身的需求进行分析&#xff0c;确定网站的基本功能和定位。这包括确定网站的目标受众、内容类型、功能模块、风格定位等方面。只有明确了需求&#xff0c;才能为后续的网站建设提供指导。 01、网站建设流程 02、网站制作多少钱 一、网站制…

Adobe Audition AU 2023-23.6.6.1 解锁版下载及安装教程(一款优秀的音频处理工具)

前言 Audition是Adobe旗下一款非常好用的音频处理工具&#xff0c;软件为用户们提供了功能强大的音频编辑功能和一个相对完善的工作流程&#xff0c;用户们无论是录制音乐、无线电广播还是视频配音&#xff0c;多音频合成&#xff0c;这款软件都能够给你足够的创作动力。audit…

https://mvnrepository.com cannot access

https://mvnrepository.com 有时候无法访问 1&#xff09;设置下DNS&#xff0c;看下行不行 WLAN DNS proxy settings (Win 10)-CSDN博客 2)或者直接找个链接试一下 https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans https://mvnrepository.com

一、hal库配置0.96寸oled屏幕+tftlcd屏幕演示

一、硬件iic配置&#xff08;使用oled演示&#xff09; 图省事复制即可&#xff08;注意&#xff1a;从机地址0x78或0x7a&#xff09; //初始化 void MX_I2C1_Init(void) {hi2c1.Instance I2C1;hi2c1.Init.ClockSpeed 100000;//标准hi2c1.Init.DutyCycle I2C_DUTYCYCLE_2;/…

如何高效应对团队中的低效程序员?

目录 引言&#xff1a;理解“低效”的真正含义 自我反思&#xff1a;领导者的责任 分析问题根源&#xff1a;环境与流程的影响 行动方案&#xff1a;培训与重新评估 总结&#xff1a;领导力的关键在于共赢 其它视角&#xff1a;中国与西方管理文化的对比 作为Leader&…

渠道管理是什么?一文教你优化渠道管理!

在当今竞争激烈的市场环境中&#xff0c;渠道管理已成为企业实现持续增长和市场份额扩张的关键。本文旨在深入探讨渠道管理的定义、重要性、优化策略及面临的挑战&#xff0c;并为企业提供一套全面的渠道管理优化指南&#xff0c;同时植入关于分销推广系统的广告&#xff0c;助…