题目要求
包含min函数的栈
- 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数
- (时间复杂度应为O(1))。
核心思想
栈的特性是先进后出,而不能从任意位置出栈,因此一个栈无法实现。只能通过建立辅助栈来实现。用辅助栈来存储栈的最小元素。用于返回最小元素。
完整代码如下
import java.util.Stack;
/**
*
* 包含min函数的栈
* 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数
* (时间复杂度应为O(1))。
*
*/
public class Solution {
Stack<Integer> data = new Stack<>();
Stack<Integer> min = new Stack<>();
public void push(int x){
data.push(x);
if(min.size() == 0 || x < min.peek()) {
min.push(x);
} else {
min.push(min.peek());
}
}
public void pop() {
if(min.size() > 0 && data.size() > 0) {
data.pop();
min.pop();
}
}
public int top() {
if(data.size() > 0 && min.size() > 0) {
return data.peek();
} else {
return -1;
}
}
public int min() {
if(data.size() > 0 && min.size() > 0) {
return min.peek();
} else {
return -1;
}
}
}