stack刷题

最小栈

最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

思路:使用两个栈,一个栈作为普通的栈,push、pop、top等操作;另一个栈,判断要 push的元素是否是栈中的最小值,是就 push。这保证了 第二个栈的栈顶元素永远就是堆栈中的最小元素。

pop 元素的时候,如果第二个栈的栈顶元素和第一个栈的栈顶元素相同时,再 pop 第二个栈的栈顶元素。

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

栈的压入、弹出序列

栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

1.  0<=pushV.length == popV.length <=1000

2.  -1000<=pushV[i]<=1000

3.  pushV 的所有数字均不相同

思路:模拟这个入栈、出栈序列

依次入栈,直到栈顶元素等于出栈序列的第一个元素,这时候就出栈,再次判断栈顶元素是否等于出栈序列的下一个元素,等于就出栈,直至不等于或栈为空时,继续入栈。

当入栈序列被遍历结束后,模拟入栈、出栈这个过程就结束了。判断出栈序列是否可以满足这个入栈序列:当栈最终为空时,说明出栈序列可以匹配入栈序列,返回 true,否则就是不匹配,返回 false

class Solution {
public:
    bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
        // write code here
        int cur1 = 0,cur2 = 0, n = pushV.size();
        stack<int> st;
        while(cur1 < n)
        {
            st.push(pushV[cur1++]);
            while(!st.empty() && st.top() == popV[cur2])
            {
                st.pop();
                cur2++;                
            }
        }
        return st.empty();
    };
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#文件操作(一)

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第20章《文件》 二、操作文件的相关类 在C#应用程序中Syste.IO名称空间包含用于在文件中读写数据的类。在此我列举一下File、Directory、Path、FileInfo、DirectoryInfo、FileSystemInfo、FileSystemWatcher。其中在Syste…

解决Android studio 创建虚拟机时提示a system image must be selected continue问题

在使用android studio的时候&#xff0c;很多新手在创建虚拟机的时候回出现 a system image must be selected continue错误。 里明显是缺少了systemImage,解决方法如下 打开SDK MANAGER,然后把右下角的show package details勾上,把对应的system image下载下来即可

mysql:查看服务端为了处理连接而创建的线程数量

使用命令show global status like Threads_created;可以查看服务端为了处理连接而创建的线程数量。 例如&#xff1a;

5G+云渲染技术:将如何快速推进XR和元宇宙?

XR&#xff08;扩展现实&#xff09;领域正在以惊人的速度增长。目前&#xff0c;到 2024 年&#xff0c;一些专家表示这个行业的价值将达到 3000 亿美元。 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益。近年来&#xff0c;很多企业遇到了将增强现实和…

【lesson18】MySQL内置函数(1)日期函数和字符串函数

文章目录 日期函数函数使用具体使用案例建表插入数据建表插入数据 字符串函数函数使用具体使用案例建表插入数据测试 日期函数 函数使用 获得年月日&#xff1a; 获得时分秒&#xff1a; 获得时间戳&#xff1a; 获得现在的时间&#xff1a; 在日期的基础上加日期&#xf…

Unity中URP下的半透明效果实现

文章目录 前言一、实现半透明的步骤1、修改Blend模式&#xff0c;使之透明2、打开深度写入&#xff0c;防止透明对象穿模3、在Tags中&#xff0c;修改渲染类型和渲染队列为半透明 Transparent 二、对透明效果实现从下到上的透明渐变1、 我们在 Varying 中&#xff0c;定义一个v…

vue3表格导入导出.xlsx

在这次使用时恰好整出来了&#xff0c;希望大家也能学习到&#xff0c;特此分享出来 使用前确保安装以下模块&#xff0c;最好全局配置element-plus ### 展示一下 ### ###导出选项 ### ###导入de数据 ### 安装的模块 npm install js-table2excel // 安装js-table2excel n…

翻译: LLMs离通用人工智能AGI有多远 20个小时学会开车 Artificial General Intelligence

AGI&#xff0c;即人工通用智能&#xff0c;是一个令人兴奋的概念。我认为围绕它的一些混淆源于“通用”这个词的使用。正如您所知&#xff0c;人工智能是一种通用技术&#xff0c;意味着它对许多不同的事情都有用。大型语言模型的崛起导致了像ChatGPT这样的单一模型可以用于许…

Java发起SOAP请求代码参考

目录 Java发起SOAP请求代码参考 代码1.组装参数2.加密参数3.发起连接4.解析返回数据 参考 文章所属专区 超链接 代码 1.组装参数 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&qu…

AUTOSAR CanTSyn模块配置与代码实现(二)

AUTOSAR CanTSyn模块配置与代码实现 1、FUP message处理 CanTSyn_process_FUP_message 先比较和SYNC报文的Sequence是否相等&#xff0c;如果不相等则不接受该报文。 然后调用CanTSyn_unpack_store_fup处理fup报文。 获取接收到FUP时的本地时间&#xff0c;并与接收到的SYNC…

虚拟机无法进入系统问题

概述 客户在华为云平台上创建了两台虚拟机并部署aarch64 V10 OS&#xff0c;2021-10-28其中一台虚拟机业务出现异常&#xff0c;运维重启虚拟机后系统进不去&#xff0c;左上角光标闪烁&#xff0c;接着重启另一台虚拟机同样起不来&#xff0c;现象一致。 分析 通过分析现场…

天眼销使用指南

刚做销售的你&#xff0c;打电话是不是总是被客户拒决&#xff1f;要不打过去就是空号错号、找不着人&#xff1f;更甚者连客户电话都不知道&#xff1f; 如何快~速找到目标客户准确的联系方式呢&#xff1f;赶紧把这份使用指南请收好&#xff0c;客户不用愁。 1、进入【天眼…

0. Java简介与安装配置

0. Java简介与安装配置 文章目录 0. Java简介与安装配置1.1 Java简介1.2 Java特性1.2 Linux环境安装1.3 Windows环境安装1.3.1 下载JDK安装包1.3.2 安装JDK3. 配置JAVA环境4. 检验安装是否成功 1.3 开发工具参考文献 1.1 Java简介 Java是一门面向对象]编程语言&#xff0c;不仅…

部分常用算法笔记

一、简单易考 1、冒泡排序 https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896 for i:0;i<length;i { for j:0;j<length-i-1;j { if array[j] > array[j1] { array[j1],array[j] array[j],array[j1] } } } 2、求数组最大最小值。 1&#xff09;O(…

Hudi 表类型和查询类型

数据湖hudi的表类型定义了数据在DFS上如何组织布局&#xff0c;同时实现一些timeline等操作&#xff08;表类型定定义数据是如何写入的&#xff09;&#xff1b;查询类型则是定义如何读取DFS上的数据。 Table typequery typeCopy-On-Write 快照查询&#xff1b; 增量查询&…

若依系列框架RuoYi(104集),RuoYi-Vue(121集)、RuoYi-Cloud(134集)最新完整视频.txt

若依系列框架RuoYi(104集),RuoYi-Vue&#xff08;121集&#xff09;、RuoYi-Cloud&#xff08;134集&#xff09;最新完整视频.txt

C/C++ BM1反转链表

文章目录 前言题目1.解决方案一1.1 思路阐述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这题是牛客网的BM1&#xff0c;主要涉及到链表的操作以及栈数据结构的使用。 题目 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的…

Arduino开发实例-液体流量测量

液体流量测量 文章目录 液体流量测量1、流量传感器介绍2、硬件准备及接线3、代码实现在本文中,将介绍如何流量传感器进行测量液体流量。 流量传感器用于测量液体流速。 市场上有不同类型的流量传感器,在本文中,我们将使用霍尔效应流量传感器。 这些类型的流量传感器是非侵入…

不是私域难做,是我们做私域的方法该换了!

最近&#xff0c;有一些声音在不断变多&#xff1a;私域越来越难做了&#xff01;许多过去做私域的成功经验&#xff0c;今天好像都不奏效了。 在业绩层面上&#xff0c;很多企业一开始还能通过大量拉新、信息轰炸这种“博概率”的方式获得销量&#xff0c;但时间一长&#xf…

Tomcat远程调试

windows环境 写一个 startup-debug.bat&#xff0c;指定tomcat的根目录&#xff0c;端口自己定义 rem *******设置Tomcat目录*******-- set CATALINE_HOMED:\asd\A8-2\tomcat d: rem 8787为可用端口,为远程调试监听端口-- cd %CATALINE_HOME%/bin set JPDA_ADDRESS8787 set J…
最新文章