题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
解题思路
【也不知道可不可以用stack实现stack???】
在Java 集合中提供有Stack类,这个类是Vector的子类;使用Stack类时候使用的不是Vector类中的方法,并且在使用时不要进行向上转型。因为要操作的方法不是由List定义的,而是由Stack定义的。
入栈: push(E item)
出栈: pop()
获取栈顶元素:peek()
维护一个栈stack,同时维护一个最小栈minStack作为辅助栈,保证辅助栈的栈顶元素是当前stack栈的最小元素。
package list;
import java.util.Stack;
public class Stack_Min2 {
Stack<Integer> stack = new Stack<Integer>();
Stack<Integer> minStack = new Stack<Integer>();//辅助栈
public void push(int node) {
stack.push(node);
if (minStack.empty()) {
minStack.push(node);
}else {
int top = minStack.peek();
if (node < top