[LeetCode]剑指 Offer 30. 包含min函数的栈

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 30. 包含min函数的栈相关的知识,希望对你有一定的参考价值。

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

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.

提示:

各函数的调用总次数不超过 20000 次

题解:

/**
 * 剑指 Offer 30. 包含min函数的栈
 *
 * @author Spring-_-Bear
 * @datetime 2022-06-15 21:18
 */
public class MinStack 
    private final Stack<Integer> dataStack;
    private final Stack<Integer> minStack;

    /**
     * initialize your data structure here.
     */
    public MinStack() 
        dataStack = new Stack<>();
        minStack = new Stack<>();
    

    public void push(int x) 
        dataStack.push(x);
        // 保证 minStack 的栈顶元素小于等于新加入的元素
        if (minStack.isEmpty() || x <= minStack.peek()) 
            minStack.push(x);
        
    

    public void pop() 
        int peek = dataStack.pop();
        if (peek == minStack.peek()) 
            minStack.pop();
        
    

    public int top() 
        return dataStack.peek();
    

    public int min() 
        return minStack.peek();
    

以上是关于[LeetCode]剑指 Offer 30. 包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 30. 包含min函数的栈

[LeetCode]剑指 Offer 30. 包含min函数的栈

[LeetCode]剑指 Offer 30. 包含min函数的栈

LeetCode剑指 Offer(12)

Leetcode刷题Python剑指 Offer 30. 包含min函数的栈

算法剑指 Offer 30. 包含min函数的栈