题目
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1) )
题解
- 思路
- 在实现栈数据结构中,再加入一个一个最小值栈
- 入栈操作时判断一下值与最小值栈顶的大小,如果小于最小值栈顶,则入最小值栈
- 出栈操作时判断一下栈顶元素和最小值栈顶元素是否相等,相等则出最小值栈
- 代码
import java.util.Stack;
public class Solution {
private int[] array = new int[10];
private Stack<Integer> minStack = new Stack<>();
private static int size;
//判断栈空不空
public boolean isEmpty(){
return size == 0;
}
//压栈
public void push(int node){
array[size] = node;
if(minStack.empty()){
minStack.push(node);
}
if(!minStack.empty() && minStack.peek()>node){
minStack.push(node);
}
size++;
}
public void pop() {
if(isEmpty()){
return;
}
if(minStack.peek().equals(array[size-1])){
minStack.pop();
}
array[--size] = 0;
}
public int top() {
return array[size-1];
}
public int min() {
return minStack.peek();
}
}
- 结果