题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

import java.util.Stack;

public class Solution {
//详细题解看官方题解
    // 以空间换时间: 从栈中找到最小的元素直接方法时遍历整个栈太麻烦
    // 因此 引入一个辅助栈 更快速找到min值 这就是以一部分辅助空间为代价 换取时间
    Stack<Integer> stack1=new Stack<Integer>();
    //辅助栈
    Stack<Integer> stack2=new Stack<Integer>();
    public void push(int node) {
        //主栈压入元素
        stack1.push(node);
        // 辅助栈没有元素的话 直接压入即可
        if(stack2.isEmpty()){
            stack2.push(node);
        }else{
            //判断压入的元素是否是当前栈中最小的元素
            //因为栈顶元素一直是最小的 所以只需跟栈顶比较即可
            int min=stack2.peek();
            if(min<node){
                stack2.push(min);
            }else{
                stack2.push(node);
            }
        }
        
    }
    
    public void pop() {
        //要谈都谈
        stack1.pop();
        stack2.pop();
    }
    
    public int top() {
        return stack1.peek();
    }
    
    public int min() {
        return stack2.peek();
    }
}
全部评论

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务