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

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求职打法:注意把武大标粗标大 本地你俩不是乱杀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务