//栈的应用(熟悉栈Stack的各种常见的API方法)
import java.util.Stack;
import java.util.Iterator;
import java.lang.Math;

public class Solution {

    Stack<Integer> stack = new Stack<>();
    public void push(int node) {
        stack.push(node);//压入栈
    }
    
    public void pop() {
        stack.pop();//将栈顶元素弹出,并且删除栈顶元素
    }
    
    public int top() {
        return stack.peek();//获取栈顶元素,但是不删除栈顶元素
    }
    
    public int min() {
        //遍历栈的几种方法
        //方法一:使用迭代器Iterator
//         Iterator iterator = stack.iterator();
//         int min = (int)iterator.next();
//         while(iterator.hasNext()){
//             min = Math.min(min,(int)iterator.next());
//         }
        
//         return min;
        
        //方法二:使用toArray方法将栈转换为数组,然后遍历数组
//         Object[] obj = stack.toArray();
//         int length = obj.length;
//         int min = (int)obj[0];
//         int temp = 0;
//         for(int i=1;i<length;i++){
//             temp = (int)obj[i];
//             if(temp < min){
//                 min = temp;
//             }
//         }
        
//         return min;
        
        //方法三:使用方法elementAt遍历栈
        int size = stack.size();
        int min = stack.elementAt(0);
        int temp = 0;
        for(int i=1;i<size;i++){
            temp = stack.elementAt(i);
            if(temp < min){
                min = temp;
            }
        }
        
        return min;
    }
}