首页 > 其他分享 >155. 最小栈

155. 最小栈

时间:2024-05-09 11:23:12浏览次数:19  
标签:MinStack minStack int top 最小 pop push 155

设计一个支持 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],[],[],[],[]]

输出:
[null,null,null,null,-3,null,0,-2]

解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

class MinStack {
public:
    MinStack() {

    }
    stack<int>re;
    stack<int>minre;

    void push(int val) {
        re.push(val);
        if(minre.empty()||minre.top()>=val)
        {
            minre.push(val);
        }
    }
    
    void pop() {
        if(re.empty()) return;
        if(re.top()==minre.top())
        {
            minre.pop();
        }
        re.pop();
    }
    
    int top() {
        return re.top();
    }
    
    int getMin() {
        return minre.top();
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

标签:MinStack,minStack,int,top,最小,pop,push,155
From: https://www.cnblogs.com/donghao99/p/18181721

相关文章

  • 153. 寻找旋转排序数组中的最小值
    已知一个长度为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]]旋转一次的结果......
  • 洛谷P1576最小花费(逆Dijkstra算法)
    背景:说实话,这题有点考建模思想,及对Dijkstra算法的理解思路:因为转账间有手续费,即有一定损失比例,故边权均小于1(比例来说),而边的路权值非和,而是积,故边权相当于负(因为每次乘会使dis[i]变小)而题目刚好求最大路,而边权又等价于全为负,不刚好是Dijkstra的逆运用吗?原理:等......
  • 最小割的结论
    记\(f\)为任意最大流,令\(G_f\)为\(f\)的残量网络。记\(G_f\)中\(s\)可达的点集合为\(S\),\(t\)可达的点集合为\(T\)。判断一个图的最小割是否唯一。最小割唯一\(\iff\)\(S\cupT=V\)。若\((u,u^C)\)是最小割,则\(G_f\)中没有\(u\rightarrowu^C\)的边。......
  • 题解【[ABC155F] Perils in Parallel】(未完成)
    题目链接两个常规转化:灯的坐标与区间坐标都很大,不妨将其离散化,转化为\(1\simn\)的点与\(1\simn\)的操作区间。对于一段区间取反,可以理解为对一段区间异或\(1\),转化为在异或差分数组上操作,即差分数组\(diff_i=a_i\bigoplusa_{i-1}\),区间\([l,r]\)异或\(1\)转化为差......
  • 力扣746.使用最小花费爬楼梯
    题目给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费解题思路​ 动态规划1.首先需要明确,先支付......
  • 最小化安装 MSVC ( 可用于 graalvm native-image )
    前言自从接触了native-image,就想把所有Java项目全用native-image编译一遍,谁不喜欢exe呢......
  • 38天【代码随想录算法训练营34期】第九章 动态规划part01 (● 理论基础 ● 509. 斐波
    理论基础斐波那契数classSolution:deffib(self,n:int)->int:ifn==0:return0ifn==1:return1returnself.fib(n-1)+self.fib(n-2)爬楼梯classSolution:defclimbStairs(self,n:int)->i......
  • 三角形最小路径和
    题源:IOI飞入寻常百姓家classSolution:defminimumTotal(self,triangle:List[List[int]])->int:n=len(triangle)dp=[[0]*(i+1)foriinrange(n)]dp[0][0]=triangle[0][0]foriinrange(1,n):dp[i][0]......
  • SP1557 GSS2 - Can you answer these queries II
    link题目大意:给一个\(n\)个元素的序列,\(q\)次询问\([l_i,r_i]\)的最大子段和(相同元素只算一个)。\(n,q\le10^5,-10^5\lea_i\le10^5\).解法:首先考虑最大子段和的经典动态解法:维护\(pre_i,suf_i,sum_i,mxsum_i\)。这个时候你会发现无法合并。Tips:对于区间询问问......
  • 网络隔离的最小配置
    作者:任云康,青云科技研发工程师前言对于项目下的网络隔离,有用户提出了以下疑问:网络隔离是针对Pod的吗?网络隔离的最小配置是什么?配置后,哪些是可以访问的,哪些是不可以访问的?通过Ingress暴露、LB类型的Service暴露、NodePort类型的Service暴露的流量的具体链路是......