题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路:这里写一个栈结构很容易,但如何在元素出栈,我们能得出这个栈的最小元素,以O(1)。这里我想到了以空间换时间,开一个大的数组,保存每一次进栈后,更新的的最小值,也就是说,有多少个栈元素,我就有多少个最小值。
import java.util.Stack;
public class Solution {
private int minnn = 90000000;
private int[] minn = new int[1000000];
private int[] arr = new int[1000000];
private int top = -1;
public void push(int node) {
++top;
if(node < minnn)
{
minnn = node;
minn[top] = minnn;
}
else
{
minn[top] = minnn;
}
arr[top] = node;
}
public void pop() {
top--;
}
public int top() {
return arr[top];
}
public int min() {
return minn[top];
}
}