20.包含min函数的栈 Java

 

题目描述

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

思路

借助辅助栈实现:
	压栈时:若辅助栈为空,则将节点压入辅助栈。否则,当当前节点小于等于辅助栈栈顶元素时将节点压入辅助栈。
	出栈时:若辅助栈和数据栈栈顶元素相同,则同时出栈。否则,只出栈数据栈元素。


代码

import java.util.Stack;

public class Solution {
    private Stack stack = new Stack();
    private Stack minStack = new Stack();
    
    
    public void push(int node) {
    	//当辅助栈为空或者当前节点值小于等于辅助栈栈顶元素才压栈
        if(minStack.isEmpty() || node <= (Integer)minStack.peek()){
            minStack.push(node);
        }
        stack.push(node);
    }
    
    public void pop() {
        if(stack.peek()==minStack.peek()){
            minStack.pop();
        }
        stack.pop();
    }
    
    public int top() {
        return (Integer)stack.peek();
    }
    
    public int min() {
        return (Integer)minStack.peek();
    }
}
posted @ 2019-03-21 09:31  飞晨信息  阅读(149)  评论(0编辑  收藏  举报