import java.util.ArrayList;
import java.util.Stack;
/**
* @author Tom Qian
* @email tomqianmaple@outlook.com
* @github https://github.com/bluemapleman
* @date 2017年8月18日
*/
//要求:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
//思路:本题比较简单,主要就是需要实现能够遍历栈中元素的功能,那么就可以用一个数组作为缓存,将栈中的元素全部pop到数组中,在直接用线性扫描获得最小的元素,之后记得将数组中的元素按照放置时的逆序压回栈就可以了。
public class 包含min函数的栈
{
Stack<Integer> stack=new Stack<Integer>();
public void push(int node) {
stack.push(node);
}
public void pop() {
stack.pop();
}
public int top() {
int topEle=stack.pop();
stack.push(topEle);
return topEle;
}
public int min() {
int size=stack.size();
int [] tempArr=new int[size];
for(int i=0;i<size;i++)
tempArr[i]=stack.pop();
for(int i=size-1;i>=0;i--)
stack.push(tempArr[i]);
int min=Integer.MAX_VALUE;
for(int i=0;i<size;i++){
int currentVal=tempArr[i];
if(currentVal<min){
min=currentVal;
}
}
return min;
}
public static void main(String[] args)
{
包含min函数的栈 obj=new 包含min函数的栈();
obj.push(3);
obj.push(-1);
obj.push(3);
obj.push(10);
obj.push(-10);
System.out.println(obj.min());
}
}