题解 | 包含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方法直接查看
查看20道真题和解析