首页 > 其他分享 >leetCode155:最小栈

leetCode155:最小栈

时间:2025-01-04 13:23:52浏览次数:1  
标签:leetCode155 minStack val int 最小 pop getMin push

题目:

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

实现 MinStack 类:

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

示例 1:

输入:

["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]

思路:

  • 定义一个辅助栈,其栈顶为当前的最小值,以支持获取最小值的getMin操作。
  • 栈的初始化,可以用 Deque。别拼错了。

代码:

class MinStack {

    /**
        栈的初始化,可以用 Deque。别拼错了。
     */
    Deque<Integer> dataStack;
    Deque<Integer> minStack;


    /**
        方法:使用辅助栈
        -定义一个「数据栈』来支持push、pop、top操作。
        -定义一个「辅助栈』,其栈顶为当前的最小值,以支持获取最小值的getMin操作。
     */
    public MinStack() {
        //初始化
        dataStack = new LinkedList<>();
        minStack = new LinkedList<>();
        //这里需要放一个初始值,不然 peek的时候会报空指针
        minStack.push(Integer.MAX_VALUE);

    }
    
    public void push(int val) {
        //两个栈都要存入数据
        dataStack.push(val);
        //存放最小数据的栈,要将最小的放在最上面
        minStack.push( Math.min( minStack.peek(), val));

    }
    
    public void pop() {
        dataStack.pop();
        minStack.pop();
    }
    
    public int top() {
       return dataStack.peek();
    }
    
    public int getMin() {
        return minStack.peek();


    }
}


标签:leetCode155,minStack,val,int,最小,pop,getMin,push
From: https://www.cnblogs.com/expiator/p/18651801

相关文章

  • LeetCode 64. 最小路径和
    题目:64.最小路径和给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。思路:多维的动态规划。最小路径和,当前格子的步数是固定的,走到上一步的路径和取小的。当前格子的步数是固定的......
  • 【华为OD-E卷 - 组合出合法最小数 100分(python、java、c++、js、c)】
    【华为OD-E卷-组合出合法最小数100分(python、java、c++、js、c)】题目给一个数组,数组里面哦都是代表非负整数的字符串,将数组里所有的数值排列组合拼接起来组成一个数字,输出拼接成的最小的数字输入描述一个数组,数组不为空,数组里面都是代表非负整数的字符串,可以是0开头,......
  • 力扣209. 长度最小的子数组
    给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例1:输入:target=7,nums=[2,3,1,2,4,3......
  • 最小栈(栈)
    设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。voidpush(intval) 将元素val推入堆栈。voidpop() 删除堆栈顶部的元素。inttop() 获取堆栈顶部的元素。intgetMin() 获取堆栈中的最小元......
  • 寻找旋转排序数组中的最小值(二分查找)
    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums=[0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0],a[1],a[2],...,a[n-1......
  • 华为OD机试真题---求字符串中所有整数的最小和
    一、题目描述输入字符串s,输出s中包含所有整数的最小和。说明字符串s,只包含a-zA-Z±;合法的整数包括1)正整数一个或者多个0-9组成,如0230021022)负整数负号-开头,数字部分由一个或者多个0-9组成,如-0-012-23-00023二、输入描述包含数字的字符串三、输出描述所......
  • leetcode 3218_切蛋糕的最小开销
    一、使用递归调用拿到题目时首先考虑到对于每次切割之后会变成两份蛋糕,我仍需对这两份蛋糕做切割,这种思想类似于递归。如果切割到蛋糕的行列都为1也就不能再切割了classSolution{//递归调用函数,如果m,n等于1就分完了;如果不等于1则便利horizontalCut和verticalCut找到最大的......
  • 32. 找最小数
    题目描述给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果需要使得NUM2的值最小。输入描述输入的第一行为一个字符串,字符串由0-9字符组成,记录正整数NUM1,NUM1长度小于32。输入的第二行为需要移除的数字的个数,小于NUM1长度。输出描述输出一个数字字符......
  • dotnet最小webApi开发实践
    dotnet最小webApi开发实践软件开发过程中,经常需要写一些功能验证代码。通常是创建一个console程序来验证测试,但黑呼呼的方脑袋界面,实在是不讨人喜欢。Web开发目前已是网络世界中的主流,微软在asp.net框架大行其道之下,也整了个最小webapi项目开发向导。今天,我也拥抱一下新的开发......
  • 【练习】完美数列:给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M
    题目给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M<=m*p,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式:输入第一行给出两个正整数N和p,其中N(<=105)是输入的正整数的个数,p(<=109)是给......