(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();
 */
相关推荐
间彧19 小时前
GraalVM 深度解析:下一代 Java 技术平台
java
自然常数e19 小时前
深入理解指针(1)
c语言·算法·visual studio
合作小小程序员小小店19 小时前
网页开发,在线%旧版本旅游管理%系统,基于eclipse,html,css,jquery,servlet,jsp,mysql数据库
java·数据库·servlet·eclipse·jdk·旅游·jsp
WWZZ202519 小时前
快速上手大模型:深度学习13(文本预处理、语言模型、RNN、GRU、LSTM、seq2seq)
人工智能·深度学习·算法·语言模型·自然语言处理·大模型·具身智能
20岁30年经验的码农20 小时前
Java Sentinel流量控制与熔断降级框架详解
java·开发语言·sentinel
程序员西西20 小时前
SpringBoot轻松整合Sentinel限流
java·spring boot·后端·计算机·程序员
q***465220 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
Li_76953220 小时前
10分钟快速入手Spring Cloud Config
java·spring·spring cloud
源码技术栈20 小时前
Java基于云计算的社区门诊系统源码 医院门诊系统源码 已实现医保结算 SaaS模式
java·云计算·源码·诊所·门诊·预约挂号·云门诊
程序员西西20 小时前
SpringBoot整合JWT实现安全认证
java·计算机·程序员·编程