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