题解 | #最大体重的牛#
最大体重的牛
https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de
- 题目考察的知识点
栈的先进后出性质,以及常用方法
- 题目解答方法的文字分析
根据栈结构先进后出的性质,我们构造一个辅助栈maxStack。我们可以使用辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最大值,那么可以快捷有效的取得最大体重的牛。而剩下的top,pop,push等操作,与一般的栈差不多,掌握常见的栈的操作即可完成。
- 本题解析所用的编程语言
java
- 完整且正确的编程代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param op string字符串一维数组
* @param vals int整型二维数组
* @return int整型一维数组
*/
public int[] max_weight_cow (String[] op, int[][] vals) {
int[] ans = new int[op.length];
Deque<Integer> xStack = new LinkedList<Integer>();;
Deque<Integer> maxStack = new LinkedList<Integer>();
int i=0;
while(i<op.length){
if(op[i].equals("MaxCowStack")){
xStack = new LinkedList<Integer>();
maxStack = new LinkedList<Integer>();
maxStack.push(Integer.MIN_VALUE);
ans[i]=-1;
}else if(op[i].equals("push")){
xStack.push(vals[i][1]);
maxStack.push(Math.max(maxStack.peek(),vals[i][1]));
ans[i]=-1;
}else if(op[i].equals("pop")){
if(!xStack.isEmpty()){
xStack.pop();
maxStack.pop();
}
ans[i] =-1;
}else if(op[i].equals("top")){
if(!xStack.isEmpty()){
ans[i]=xStack.peek();
}else{
ans[i]=-1;
}
}else if(op[i].equals("getMax")){
ans[i] = maxStack.peek();
}
i++;
}
return ans;
}
}