min函数的栈(最小栈),剑指offer,力扣

目录

题目地址:

相同题目题解地址:

题目:

我们直接看题解吧:

解题方法:

审题目+事例+提示:

解题分析:

解题思路:

补充说明: 

代码实现:


题目地址:

LCR 147. 最小栈 - 力扣(LeetCode)

难度:中等

今天刷包含min函数的栈(最小栈),大家有兴趣可以点上看看题目要求,试着做一下

相同题目题解地址:

    最小栈,力扣-CSDN博客

题目:

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)

我们直接看题解吧:

解题方法:

辅助栈方法

审题目+事例+提示:

在常数时间内检索到最小数min

解题分析:

min函数的栈(最小栈),剑指offer,力扣_第1张图片

解题思路:

min函数的栈(最小栈),剑指offer,力扣_第2张图片

补充说明: 

min函数的栈(最小栈),剑指offer,力扣_第3张图片

代码实现:

注 :

Java 代码中,由于 Stack 中存储的是 int 的包装类 Integer ,因此需要使用 equals() 代替 == 来比较值是否相等。

class MinStack {
    Stack A, B;
    public MinStack() {
        A = new Stack<>();
        B = new Stack<>();
    }
    public void push(int x) {
        A.add(x);
        if(B.empty() || B.peek() >= x)
            B.add(x);
    }
    public void pop() {
        if(A.pop().equals(B.peek()))
            B.pop();
    }
    public int top() {
        return A.peek();
    }
    public int min() {
        return B.peek();
    }
}
 
 
/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(x);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.min();
 */

你可能感兴趣的:(#,栈与队列,剑指offer,java,算法,数据结构)