设计getMin功能的栈
题目描述
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
代码
import java.util.*;
public class Solution {
/**
* return a array which include all ans for op3
* @param op int整型二维数组 operator
* @return int整型一维数组
*/
public int[] getMinStack (int[][] op) {
// write code here
if(op==null || op.length==0 || op[0].length==0){
return new int[0];
}
ArrayList<Integer> min_List = new ArrayList<Integer>();
ArrayList<Integer> res_List = new ArrayList<Integer>();
for(int[] opt: op){
if(opt[0] == 1){
//push
if(min_List.size()==0){
//若是首个,则直接添加
min_List.add(opt[1]);
}else{
if(opt[1] < min_List.get(min_List.size()-1)){
//若新添加的值小于链表中的最小值,则追加
min_List.add(opt[1]);
}else{
//反之,继续追加链条中的最小值
min_List.add( min_List.get(min_List.size()-1));
}
}
}else if(opt[0] == 2){
//pop
min_List.remove(min_List.size()-1);
}else if(opt[0] == 3){
//getMin
int temp = min_List.get(min_List.size()-1);
res_List.add(temp);
}
}
int[] res = new int[res_List.size()];
for(int i=0;i<res_List.size();i++ ){
res[i] = res_List.get(i);
}
return res;
}
}