题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
import java.util.*;
import java.util.Stack;
public class Solution {
Stack<Integer> stack = new Stack<>();
// 栈用于记录较小的元素
Stack<Integer> stack1 = new Stack<>();
public void push(int node) {
stack.push(node);
// 每次pyush时判断是不是更小的元素,是的话就加入栈2
if(stack1.isEmpty()||stack1.peek()>node){
stack1.push(node);
}else{
// 不小于的话就重复加入栈顶元素,保持与栈1存储元素数量相同
// 并且栈顶元素最小
stack1.push(stack1.peek());
}
}
public void pop() {
//因为弹出时可能将最小的元素弹出,
// 所以此时也要讲栈2弹出一个元素,
// 与栈1保持同步
stack.pop();
stack1.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return stack1.peek();
}
}
查看5道真题和解析