题解 | #最大体重的牛#

最大体重的牛

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

考察的知识点:MaxCowStack 类的实现、栈

解答方法分析:

  1. MaxCowStack操作将栈s和maxStack清空,并将结果数组res的当前位置设置为-1。
  2. push操作将vals[i][1压入栈s,并更新maxStack的值。如果maxStack为空,则将vals[i][1]也压入maxStack;否则,比较maxStack的栈顶元素和vals[i][1]的大小,将较大的压入maxStack。
  3. pop操作将栈s和maxStack的栈顶元素出栈,并将结果数组res的当前位置设置为-1。
  4. top操作返回栈s的栈顶元素,并将其赋值给结果数组res的当前位置。
  5. getMax操作返回maxStack栈顶元素,并将其赋值给结果数组res的当前位置。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param op string字符串vector
     * @param vals int整型vector<vector<>>
     * @return int整型vector
     */
    vector<int> max_weight_cow(vector<string>& op, vector<vector<int> >& vals) {
        stack<int> s;
        stack<int> maxStack;
        int n = op.size();
        vector<int> res(n);

        for (int i = 0; i < n; i++) {
            string ops = op[i];

            if (ops == "MaxCowStack") {
                while (!s.empty()) s.pop();
                while (!maxStack.empty()) maxStack.pop();
                res[i] = -1;
            } else if (ops == "push") {
                s.push(vals[i][1]);
                if (maxStack.empty()) {
                    maxStack.push(vals[i][1]);
                } else {
                    int tmp = maxStack.top() > vals[i][1] ? maxStack.top() : vals[i][1];
                    maxStack.push(tmp);
                }
                res[i] = -1;
            } else if (ops == "pop") {
                s.pop();
                maxStack.pop();
                res[i] = -1;
            } else if (ops == "top") {
                res[i] = s.top();
            } else if (ops == "getMax") {
                res[i] = maxStack.top();
            }
        }

        return res;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务