题目描述:实现一个栈的功能,包含min函数,就是能查询到栈里面的最小值是多少
思路:定义一个数组element来存放数,定义一个minStack来存放每个元素对应的最小值,min记录当前最小值,用size来表明当前栈大小,用ensureCapacity来判断是否需要扩容,empty()来判断栈是否为空。
java程序:
import java.util.Stack;
import java.util.Arrays;
public class Solution {
int size=0;
Stack<Integer> minStack = new Stack<Integer>();
Integer[] elements = new Integer[10];
Integer min = Integer.MAX_VALUE;
public void push(int node) {
ensureCapacity(size+1);
elements[size++] = node;
if(node<=min){
min = node;
minStack.push(node);
}else{
minStack.push(min);
}
}
public void ensureCapacity(int size){
int len = elements.length;
if(size>len){
int newLen = (len*3)/2+1;
elements = Arrays.copyOf(elements,newLen);
}
}
public void pop() {
Integer top = top();
if(top != null){
elements[size-1] = null;
}
size--;
minStack.pop();
min = minStack.peek();
}
public int top() {
if(!empty()){
if(size-1>=0)
return elements[size-1];
}
return (Integer)null;
}
public boolean empty(){
return size == 0;
}
public int min() {
return min;
}
}