题解 | 最大体重的牛
最大体重的牛
https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de
- 一个辅助栈,记录每次压栈时最大值。
import java.util.*; public class Solution { static class MaxCowStack { Deque<Integer> stack; Deque<Integer> maxStack; public MaxCowStack() { stack = new ArrayDeque<>(); maxStack = new ArrayDeque<>(); } public void push(int id, int weight) { stack.addLast(weight); if (!maxStack.isEmpty() && maxStack.getLast() > weight) { maxStack.addLast(maxStack.getLast()); } else { maxStack.addLast(weight); } } public void pop() { stack.removeLast(); maxStack.removeLast(); } public int top() { return stack.getLast(); } public int getMax() { return maxStack.getLast(); } } public int[] max_weight_cow (String[] op, int[][] vals) { int[] ans = new int[op.length]; MaxCowStack stack = null; for (int i = 0; i < op.length; i++) { String s = op[i]; switch (s) { case "MaxCowStack": stack = new MaxCowStack(); ans[i] = -1; break; case "push": stack.push(vals[i][0], vals[i][1]); ans[i] = -1; break; case "pop": stack.pop(); ans[i] = -1; break; case "top": ans[i] = stack.top(); break; case "getMax": ans[i] = stack.getMax(); break; } } return ans; } }