包含min函数的栈(求当前栈中最小元素值)
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
解题思路:
import java.util.Stack;
public class Solution {
//方法一:两个栈,stack存放栈元素,一个存放最小元素
//存放当前栈中元素的最小值(即curMinStack的栈顶元素),最小栈深度与数据栈一样
//数据栈的前i个元素中的最小值=最小栈中第i个元素值
private Stack<Integer> stack = new Stack<>();
private Stack<Integer> curMinStack = new Stack<>();
public void push(int node) {
stack.push(node);
if(curMinStack.empty() || node <= curMinStack.peek()) {
curMinStack.push(node);
}else {
curMinStack.push(curMinStack.peek());
}
}
public void pop() {
stack.pop();
curMinStack.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return curMinStack.peek();
}
}