题解 | 包含min函数的栈

包含min函数的栈

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

import java.util.*;
import java.util.Stack;

public class Solution {

      Stack<Integer> s1=  new Stack<Integer>();

     Stack<Integer> s2=  new Stack<Integer>();
    
    public void push(int node) {
        s1.push(node);
        if(s2.isEmpty()||node<s2.peek()){
            s2.push(node);
        }else{
            s2.push(s2.peek());
        }
    }
    
    public void pop() {
        s1.pop();
        s2.pop();
    }
    
    public int top() {
        return s1.peek();
    }
    
    public int min() {
        return s2.peek();
    }
}

利用双栈的思想来解决,第一个栈就是来正常压栈(push)出栈(pop)查看(peek)的,用第二个栈来找最小的栈,在压栈的时候,第一个栈正常的压,第二个栈要判断 若是空的或者比此时的栈顶元素还小时才会压入,不然就在压一次栈顶元素,来保证第二个栈的栈顶元素就是压入的元素中最小的,方便min方法直接查看

全部评论

相关推荐

03-31 21:47
东南大学 C++
彭于晏前来求offe...:吓晕了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务