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

包含min函数的栈

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

进阶:栈的各个操作的时间复杂度是  O(1)  ,空间复杂度是  O(n) 

解题思路:

有点困惑的时候,用了两个栈,为什么空间复杂是O(n) 而不是O(2n)?

做得好的: 代码都是自己手敲出来的,也没有看答案, well done~!

这里注意stack的用法, peek()只取出栈顶元素,不弹出,pop是取出也弹出。

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

public class Solution {

    Stack<Integer> minStack = new Stack<Integer>();
    Stack<Integer> comStack = new Stack<Integer>();

    public void push(int node) {
        comStack.push(node);
        if(minStack.isEmpty() || minStack.peek()>node) {
            minStack.push(node);
        } else {
            int top = minStack.peek();
            minStack.push(top);
        }
    }

    public void pop() {
        comStack.pop();
        minStack.pop();
    }

    public int top() {
        return comStack.peek();
    }


    public int min() {
        return minStack.peek();
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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