题解 | #最大体重的牛#

最大体重的牛

https://www.nowcoder.com/practice/0333d46aec0b4711baebfeb4725cb4de

  1. 题目考察的知识点

栈的先进后出性质,以及常用方法

  1. 题目解答方法的文字分析

根据栈结构先进后出的性质,我们构造一个辅助栈maxStack。我们可以使用辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最大值,那么可以快捷有效的取得最大体重的牛。而剩下的top,pop,push等操作,与一般的栈差不多,掌握常见的栈的操作即可完成。

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
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;
    }
}
全部评论

相关推荐

AFBUFYGRFHJLP:直接去美帝试试看全奖phd吧
点赞 评论 收藏
分享
11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务