剑指Offer——包含min函数的栈

By AverageJoeWang
 标签:

包含min函数的栈

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

  • 解题思路

    • 利用一个辅助栈来存放最小值
    • 栈 3,4,2,5,1
    • 辅助栈 3,3,2,2,1
    • 每入栈一次,就与辅助栈顶比较大小,如果小就入栈,如果大就入栈当前的辅助栈顶
    • 当出栈时,辅助栈也要出栈
    • 这种做法可以保证辅助栈顶一定都当前栈的最小值
  • 代码实现

import java.util.Stack;

public class Solution {
    Stack<Integer> dataStack = new Stack<Integer>();
    Stack<Integer> minStack = new Stack<Integer>();

    public void push(int node) {
        dataStack.push(node);
        if (minStack.isEmpty() || node < minStack.peek()) {
            minStack.push(node);
        } else {
            minStack.push(minStack.peek());
        }
    }

    public void pop() {
        dataStack.pop();
        minStack.pop();
    }

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

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