剑指offer 包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

/** * 辅助栈保存(当前压入栈)最小值 * 压人x,如果x小于辅助栈顶元素,则压人x,否则压人辅助栈顶元素 * 使得当前栈顶一直保存当前栈的最小值 */
public class Solution {


   Stack<Integer> stack = new Stack<>();
    Stack<Integer> minstack = new Stack<>();

    public void push(int node) {
        stack.push(node);
        if (minstack.empty() || node < minstack.peek()) {
            minstack.push(node);
        }else {
            minstack.push(minstack.peek());
        }
    }

    public void pop() {
        if (stack.empty() && minstack.empty()) {
            return;
        }
        stack.pop();
        minstack.pop();
    }

    public int top() {
        if (stack.empty()) {
            return 0;
        }
        return stack.peek();
    }

    public int min() {
        if (minstack.empty()) {
            return 0;
        }
        return minstack.peek();
    }
}

你可能感兴趣的:(栈)