一、题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
二、解题思路
@周旭龙

从上图可以看出来,无非就是用一个辅助栈minStack,来记录最小的数。
三、代码实现
public class Solution {
private Stack<Integer> dataStack;
private Stack<Integer> minStack;
//构造方法不能带泛型
public Solution(){
this.dataStack = new Stack<>();
this.minStack = new Stack<>();
}
public void push(int node) {
//数据栈压栈
dataStack.push(node);
if(minStack.isEmpty()||minStack.peek()>node){
minStack.push(node);
}else{
minStack.push(minStack.peek());
}
}
public void pop() {
if(dataStack.isEmpty()){
return;
}
dataStack.pop();
minStack.pop();
}
public int top() {
return this.dataStack.peek();
}
public int min() {
return this.minStack.peek();
}
}
网友评论