题目 : 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路 : 简单题 ,不做赘述
import java.util.Stack;
public class Solution {
//记得指定泛型,以免后续需要强制类型转换
Stack<Integer> stackdata = new Stack<>();
Stack<Integer> minNum = new Stack<>();
//入栈
public void push(int node) {
stackdata.push(node);
if (minNum.isEmpty()) {
minNum.push(stackdata.peek());//Java中获取栈顶:peek
}else if (stackdata.peek() < minNum.peek()) {
minNum.push(stackdata.peek());
}else {
minNum.push(minNum.peek());
}
}
//出栈
public void pop() {
stackdata.pop();
minNum.pop();//同步弹出元素
}
//查看栈顶元素
public int top() {
return stackdata.peek();
}
//查看最小元素
public int min() {
return minNum.peek();
}
}