题解 | #最大体重的牛# STL的使用

最大体重的牛

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

知识点

STL的使用 模拟

题意分析

维护一个数据结构, 可以获取栈顶的权值 / 抛出栈顶元素 / 获取最大的元素

一种比较取巧的办法是利用multiset维护权值, 并用栈去模拟

获取最大权值可以使用 *S.rbegin()单次时间复杂度 O(1)

每次插入 / 删除元素的时间复杂度 O(logn)

时间复杂度

瓶颈在维护multiset , 每次插入 / 删除元素的时间复杂度 O(logn)

总体时间复杂度 O(nlogn)

AC code (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) {
        // write code here
        multiset<int> S;
        stack<int> stk;
        vector<int> res;
        int n = (int)op.size();
        for (int i = 0; i < n; i ++) {
            auto& s = op[i];
            if (s == "push") {
                int id = vals[i][0], w = vals[i][1];
                stk.push(w);
                S.insert(w);
                res.push_back(-1);
            }
            else if (s == "pop") {
                if (!stk.empty()) {
                    S.erase(S.find(stk.top()));
                    stk.pop();
                }
                res.push_back(-1);
            }
            else if (s == "top") {
                if (stk.empty()) {
                    res.push_back(-1);
                }
                else {
                    res.push_back(stk.top());
                }
            }
            else if (s == "getMax") {
                if (stk.empty()) res.push_back(-1);
                else res.push_back(*S.rbegin());
            }
            else {
                // MaxCowStack
                res.push_back(-1);
            }
        }
        return res;
    }
};

全部评论

相关推荐

02-18 17:30
腾讯_TEG_技术
多刷**&nbsp;背八股&nbsp;刷面经&nbsp;项目话术准备好&nbsp;不会差的!!!后台看到好多小伙伴们都出现其中一个环节的错误,,,可惜了抓紧机会吧&nbsp;有的是hc&nbsp;但缺的就是稍微用心的人
野猪不是猪🐗:多刷星星,背八股背话术,真的能过你们?对一个个没实习过的学生狂问场景题设计题和底层深挖,别以为我不知道一边说缺人还一边各种kpi面
点赞 评论 收藏
分享
一天代码十万三:实习东西太少了,而且体现不出你业务,3个月不可能就这点产出吧,建议实习多写点,玩具项目面试官都不感兴趣的
点赞 评论 收藏
分享
头发暂时没有的KFC总裁:找廉价劳动力罢了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务