import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param op string字符串一维数组 * @param vals int整型二维数组 * @return int整型一维数组 */ public static int[] max_weight_cow (String[] op, int[][] vals) { // write code here Stack<Integer> stack = new Stack<>(); Stack<Integer> max_stack = new Stack<>(); int[] arr = new int[op.length]; for(int i=0;i<op.length;i++){ switch (op[i]) { case "push": stack.add(vals[i][1]); if (max_stack.isEmpty() || max_stack.peek() < vals[i][1]) { max_stack.add(vals[i][1]); } arr[i] = -1; break; case "pop": int top_value = stack.pop(); if (top_value == max_stack.peek()) { max_stack.pop(); } arr[i] = -1; break; case "top": arr[i] = stack.peek(); break; case "getMax": arr[i] = max_stack.peek(); break; default: arr[i] = -1; break; } } return arr; } }
本题考察的知识点是栈的应用,所用编程语言是java。
本题我用了两个栈,一个单调栈用来求出最大值,一个普通栈用来求栈顶元素值或者弹出栈顶元素值,当弹出栈顶元素时需要判断单调栈此时栈顶元素是否需要出栈