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

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务