题目描述
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
实现思路
设置一个栈 minStack 专门用来保存栈 dataStack 的最小值。
1.push 操作:将数值压入 dataStack 中,若 minStack 为空或 minStack 不为空且 minStack 的栈顶元素大于等于当前数值,则将数值也压入 minStack。
2.pop 操作:将数据从 dataStack 弹出,若 minStack 不为空且 minStack 的栈顶元素等于 dataStack 的弹出元素,则将 minStack 的栈顶元素弹出。
3.getMin 操作:直接将 minStack 的栈顶元素返回。
三种操作的时间复杂度都为 O(1)。
代码实现
import java.util.*;
public class Solution {
/**
* return a array which include all ans for op3
* @param op int整型二维数组 operator
* @return int整型一维数组
*/
Stack<Integer> minStack = new Stack<>();
Stack<Integer> dataStack = new Stack<>();
public int[] getMinStack (int[][] op) {
// write code here
if(op == null){
return null;
}
int n = 0;
for(int i = 0 ; i<op.length ;i