面试必考真题-算法篇 牛客网
栈
题目描述
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
输入 | 返回值 |
---|---|
[[1,3],[1,2],[1,1],[3],[2],[3]] | [1,2] |
题目分析
操作类似剑指offer22题,直接利用两个栈,一个用于正常存储,另一个用于最小值存储即可。
下面是Java代码
import java.util.*;
import java.util.Stack;
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
Stack<Integer> s = new Stack<Integer>();
Stack<Integer> min = new Stack<>();
ArrayList<Integer> list = new ArrayList<>();
int len = op.length;
for(int i = 0 ; i < len ; i++){
if(op[i][0] == 1){
s.push(op[i][1]);
if(min.isEmpty()||min.peek()>op[i][1]){
min.push(op[i][1]);
}else{
min.push(min.peek());
}
}else if(op[i][0] == 2){
if(!s.isEmpty()){
min.pop();
s.pop();
}
}else if(op[i][0] == 3){
list.add(min.peek());
}
}
int[] result = new int[list.size()];
for(int i = 0 ; i < result.length;i++){
result[i] = list.get(i);
}
return result;
}
}