【Hot100】LeetCode—155. 最小栈

news2024/9/23 5:25:57

目录

  • 题目
  • 1- 思路
  • 2- 实现
    • ⭐155. 最小栈——题解思路
  • 3- ACM 实现


题目

  • 原题连接:155. 最小栈

1- 思路

思路

  • 最小栈 ——> 借助两个栈来实现

2- 实现

⭐155. 最小栈——题解思路

在这里插入图片描述

class MinStack {

    Stack<Integer> data;
    Stack<Integer> min;

    public MinStack() {
        data = new Stack<>();
        min = new Stack<>();
    }

    // 判断当前元素和 min 的peek大小
    public void push(int val) {
        data.push(val);

        if(min.isEmpty() || val<=min.peek()){
            min.push(val);
        }else{
            min.push(min.peek());
        }
    }

    public void pop() {
        data.pop();
        min.pop();
    }

    public int top() {
        return data.peek();
    }

    public int getMin() {
        return min.peek();
    }
}

3- ACM 实现

public class MinStack {

    Stack<Integer> data;
    Stack<Integer> min;

    public MinStack(){
        data = new Stack<>();
        min = new Stack<>();
    }

    public void push(int val){
        data.push(val);
        if(min.isEmpty() || val<=min.peek()){
            min.push(val);
        }else{
            min.push(min.peek());
        }
    }

    // pop
    public void pop(){
        data.pop();
        min.pop();
    }

    // top()
    public int top(){
        return data.peek();
    }

    // getMin()
    public int getMin(){
        return min.peek();
    }


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        MinStack minStack = null;

        while (scanner.hasNext()) {
            String command = scanner.next();
            if (command.equals("push")) {
                int value = scanner.nextInt();
                minStack.push(value);
            } else if (command.equals("pop")) {
                minStack.pop();
            } else if(command.equals("MinStack")) {
                minStack = new MinStack();
            }
            else if (command.equals("top")) {
                System.out.println(minStack.top());
            } else if (command.equals("getMin")) {
                System.out.println(minStack.getMin());
            }
        }
        scanner.close();
    }

}

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

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

相关文章

如何在Linux上部署Ruby on Rails应用程序

在Linux上部署Ruby on Rails应用程序是一个相对复杂的过程&#xff0c;需要按照一系列步骤进行。下面是一个基本的部署过程&#xff0c;涵盖了从安装所需软件到部署应用程序的所有步骤。 安装必要的软件 在部署Ruby on Rails应用程序之前&#xff0c;需要确保Linux系统上安装了…

etime:拓展time

拓展C库的time模块&#xff0c;时间格式转换、代码块计时器。

公司想无偿裁员,同事赖着不走

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 这招好像也不错! 事情是这样的&#xff1a;某公司准备把成本高的员工都裁掉&#xff0c;主要包含研发部和程序员&#xff0c;总共18个人&#xff0c;准备裁掉10人&#xff0c;因为他们工资开的太高了&#xff0c;…

CH390H+STM32F1+LWIP

文章目录 1、CH390芯片介绍2、电路部分3、LWIP调试3.1修改点13.2 修改点2 4、结果展示参考 1、CH390芯片介绍 官网地址&#xff1a; 南京沁恒微电子股份有限公司 特点&#xff1a; 2、电路部分 CH390及接口&#xff1a; STM32F1引脚&#xff1a; 不含LWIP的demo及LWIP…

数据安全评估师CCRC-DSA:数据安全如何“护航”创新发展

在2024年的中关村论坛年会关于数据安全治理与发展的讨论中&#xff0c;新加坡资讯通信媒体发展局局长柳俊泓指出&#xff0c;根据预测&#xff0c;今年全球将产生约147泽字节的数据量&#xff0c;这意味着每个地球上的人都拥有相当于150部iPhone的数据量。 柳俊泓强调&#xf…

【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}

文章目录 1.初识pollpoll与select的主要联系与区别poll的原理poll的优点poll的缺点poll vs select 2.poll开发多客户端echo服务器封装套接字接口Makefile主函数日志服务聊天服务器 1.初识poll poll是Linux系统中的一个系统调用&#xff0c;它用于监控多个文件描述符&#xff08…

RocketMQ实现分布式事务

RocketMQ的分布式事务消息功能&#xff0c;在普通消息基础上&#xff0c;支持二阶段的提交。将二阶段提交和本地事务绑定&#xff0c;实现全局提交结果的一致性。 1、生产者将消息发送至RocketMQ服务端。 2、RocketMQ服务端将消息持久化成功之后&#xff0c;向生产者返回Ack确…

2. LangChain4j 之AI Services

一: AI Services介绍 LangChain4j提供了很多基础的组件&#xff0c;每次使用都需要你编写大量的样板代码&#xff0c;LangChain4j就提供了一个高级的组件AI Services&#xff0c;它可以简化与大模型(LLM)和其他组件交互的复杂度。让开发者更专注于业务逻辑&#xff0c;而不是底…

【JavaScript】聊一聊js中的浅拷贝与深拷贝与手写实现

前言 什么是深拷贝与浅拷贝&#xff1f;深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型&#xff1a; 基本数据类型&#xff08;6种&#xff09;String、Number、Object、Boolean、null、undefined、symbol&#xff…

李秘书讲写作:面对交通违规处罚不当或误判时怎么办?

李秘书讲写作&#xff1a;面对交通违规处罚不当或误判时怎么办&#xff1f; #李秘书讲写作#在这节讲三个问题&#xff0c;最后一个问题对你非常有用&#xff01;不信请看&#xff1a; 一、个人交通违规处罚不当或误判一般有哪些情形&#xff1f; 在现代社会&#xff0c;交通违规…

框架设计MVP

重点&#xff1a; 1.presenter里面包含view和model 2.和MVP不同的是View和Model之间不进行交互 3.view包含presenter,view通过presenter反向处理逻辑。 链接&#xff1a; MVP简单实现_安卓mvp presenter-CSDN博客 Model.h #pragma once //Model数据处理器 class Model { …

Java、Python、C语言?5大热门编程语言,我该怎么选?

在开始前分享一些编程的资料需要的同学评论888即可拿走 是我根据网友给的问题精心整理的一提到编程&#xff0c;大家就会想到一堆莫名其妙的缩写&#xff0c;比如C、C、JAVA、VB、VC、FoxPro、Delphi、SQL、PHP、ASP、JSP等等&#xff0c;那么编程语言究竟多少种呢&#xff1f;…

数据库:redis练习题

1、安装redis&#xff0c;启动客户端、验证。 redis-server redis-cli 2、string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; set mykey "haha" &#xff08;2&#xff09; 读取键值&#xff1a; get mykey &#xff08;3&…

算法金 | 来了,pandas 2.0

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今日 210/10000 Pandas 是一个强大的数据分析库&#xff0c;广泛应用于科学研究、金融分析、商业智能等领域。它提供了高效的数据结构…

Jmeter常用组件及执行顺序

一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合&#xff0c;每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中&#xff0c;每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中&#xff0c;线程组组件运行用户设置线程数量、初始化方式等…

明日周刊-第16期

最近很想去看一场蔡健雅的演唱会&#xff0c;以前从来没去过演唱会。原先是想把第一次机会留给周杰伦的演唱会&#xff0c;但是周董的票太难抢了。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、经济与市场 北京二手房价环比上涨&#xff1a; 6月份&#xff0c;北京二…

JavaScript原型

前言 **原型的使用&#xff1a;**可以通过原型对象来添加共享的方法&#xff0c;这样所有通过该构造函数创建的对象实例都可以访问和使用这些方法。 举例 ● 例如我们现在想在构造函数中添加一个计算年龄的方法&#xff0c;并且这个方法可以让所有的对象实例都可以访问到 P…

C++基础篇(2)

目录 前言 1.缺省参数 2.函数重载 2.1函数重载的基本规则 ​编辑2.2注意事项 2.3 重载解析&#xff08;Overload Resolution&#xff09;--补充内容 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 4.指针和引用的关系 结束语 前言 上节小编…

互联网末法时代的一些思考

这篇文章也是临时起意&#xff0c;很长一段时间没写个人思考类的文章&#xff0c;主要原因也是时间完全不够用。随着年龄的增长&#xff0c;看待问题的视角也逐渐发生变化&#xff0c;例如从关注现象到关注动机&#xff0c;从关注结果到关注起因&#xff0c;2021年的时代我曾经…

前端设计模式:教科书般的实践指南

前端设计模式&#xff1a;教科书般的实践指南 引言 亲爱的前端小伙伴们&#xff0c;你们是否曾经在代码的海洋中迷失方向&#xff1f;是否曾经被项目经理的"简单需求"折磨得欲仙欲死&#xff1f;别担心&#xff0c;今天我们就来聊聊那些能让你在前端江湖中纵横捭阖…