剑指Offer_20_包含min函数的栈

题目描述

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

解题思路

利用两个栈存放数据,一个存放数据,另一个存放,当前最小的值。

实现

import java.util.Stack;

public class Solution {

    private Stack<Integer> data = new Stack<>();
    private Stack<Integer> min = new Stack<>();

    private int minNum = Integer.MAX_VALUE;

    public void push(int node) {
        if (node < minNum) minNum = node;
        data.push(node);
        min.push(minNum);
    }
    
    public void pop() {
        if (!data.empty() && !min.empty()){
            data.pop();
            min.pop();
        }
    }
    
    public int top() {
        if (!data.empty() && !min.empty()){
            return data.peek();
        }
        return -1;
    }
    
    public int min() {
        if (!data.empty() && !min.empty()){
            return min.peek();
        }
        return -1;
    }
}
posted @ 2016-08-15 19:15  峰扬迪  阅读(94)  评论(0编辑  收藏  举报