其他分享
首页 > 其他分享> > 剑指Offer-包含min函数的栈

剑指Offer-包含min函数的栈

作者:互联网

Description:
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

Notes:

解题思路:
我们需要用到两个栈来实现,其中一个stackData用来正常的保存数据,另外一个stackMin用来保存到目前为止的最小值;

Java
import java.util.Stack;

public class Solution {
    private Stack<Integer> stackData = new Stack<>();
    private Stack<Integer> stackMin = new Stack<>();
    
    public void push(int node) {
        stackData.push(node);
        if (stackMin.isEmpty() || node <= stackMin.peek()) {
            stackMin.push(node);
        }
    }
    
    public void pop() {
        if (stackData.isEmpty()) {
            throw new RuntimeException("the stack is empty");
        }
        int node = stackData.pop();
        if (node == stackMin.peek()) {
            stackMin.pop();
        }
    }
    
    public int top() {
        if (stackData.isEmpty()) {
            throw new RuntimeException("the stack is empty");
        }
        return stackData.peek();
    }
    
    public int min() {
        if (stackMin.isEmpty()) {
            throw new RuntimeException("the stack is empty");
        }
        return stackMin.peek();
    }
}

标签:node,元素,函数,Offer,min,栈顶,stackMin,stackData,Stack
来源: https://blog.csdn.net/qq_24133491/article/details/89788256