(LeetCode 面试经典 150 题 ) 155. 最小栈 (栈)

题目:155. 最小栈


思路:栈,时间复杂度0(n)。

在插入栈元素val时,同时加入一个字段,维护插入当前元素val时的最小值即可。

C++版本:

cpp 复制代码
class MinStack {
public:
    stack<pair<int,int>> st;
    MinStack() {
    	// 哨兵
        st.push({0,INT_MAX});
    }
    
    void push(int val) {
        st.push({val,min(getMin(),val)});
    }
    
    void pop() {
        st.pop();
    }
    
    int top() {
        return st.top().first;
    }
    
    int getMin() {
        return st.top().second;
    }
};

/**
 * 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();
 */

JAVA版本:

java 复制代码
class MinStack {
    private final Deque<int[]> st=new ArrayDeque<>();
    public MinStack() {
        st.push(new int[]{0,Integer.MAX_VALUE});
    }
    
    public void push(int val) {
        st.push(new int[]{val,Math.min(getMin(),val)});
    }
    
    public void pop() {
        st.pop();
    }
    
    public int top() {
        return st.peek()[0];
    }
    
    public int getMin() {
        return st.peek()[1];
    }
}

/**
 * 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();
 */

GO版本:

go 复制代码
type PII struct {
    x int
    y int
}

type MinStack struct {
    st []PII 
}


func Constructor() MinStack {
    return MinStack{[]PII{{0,math.MaxInt}}}
}


func (this *MinStack) Push(val int)  {
    this.st=append(this.st,PII{val,min(this.GetMin(),val)})
}


func (this *MinStack) Pop()  {
    this.st=this.st[:len(this.st)-1]
}


func (this *MinStack) Top() int {
    return this.st[len(this.st)-1].x
}


func (this *MinStack) GetMin() int {
    return this.st[len(this.st)-1].y
}


/**
 * Your MinStack object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(val);
 * obj.Pop();
 * param_3 := obj.Top();
 * param_4 := obj.GetMin();
 */
相关推荐
virus59457 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
一匹电信狗7 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
鱼跃鹰飞8 小时前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
Queenie_Charlie8 小时前
小陶的疑惑2
数据结构·c++·树状数组
没差c8 小时前
springboot集成flyway
java·spring boot·后端
时艰.8 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
梵刹古音9 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
编程彩机9 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪9 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
筵陌9 小时前
算法:模拟
算法