题解 | #最大体重的牛#
最大体重的牛
https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de
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。
本题我用了两个栈,一个单调栈用来求出最大值,一个普通栈用来求栈顶元素值或者弹出栈顶元素值,当弹出栈顶元素时需要判断单调栈此时栈顶元素是否需要出栈
查看9道真题和解析