题解 | #包含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();
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
frutiger:逆天,我家就安阳的,这hr咋能说3k的,你送外卖不比这工资高得多?还说大厂来的6k,打发叫花子的呢?这hr是怎么做到说昧良心的话的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务