2457.美丽整数的最小增量
链接:2457.美丽整数的最小增量
难度:Medium
标签:贪心、数学
简介:返回一个二维字符串数组 answer ,其中 answer[i] = [creatori, idi] 表示 creatori 的流行度 最高 且其最流行的视频 id 是 idi ,可以按任何顺序返回该结果。
题解 1 - cpp
- 编辑时间:2022-10-30
- 执行用时:724ms
- 内存消耗:240.8MB
- 编程语言:cpp
- 解法介绍:暴力枚举,通过 map 排序。
struct MyData {
    long long sum;
    int nmax;
    string name, smax;
    map<string, int> m;
    MyData() {};
    MyData(string name): name(name), sum(0), nmax(0), smax(""){}
    void setMap(string id, int view) {
        if (nmax < view || nmax == view && (smax == "" || smax > id)) {
            nmax = view;
            smax = id;
        }
        sum += view;
        m[id] = view;
    }
};
class Solution {
public:
    vector<vector<string>> mostPopularCreator(vector<string>& creators, vector<string>& ids, vector<int>& views) {
        int n = creators.size();
        map<string, MyData> m;
        vector<vector<string>> ans;
        for (int i = 0; i < n; i++) {
            if (!m.count(creators[i])) m[creators[i]] = MyData(creators[i]);
            m[creators[i]].setMap(ids[i], views[i]);
        }
        int maxsum = m.begin()->second.sum;
        for (auto &item : m) {
            if (item.second.sum > maxsum) ans.clear(), maxsum = item.second.sum;
            if (item.second.sum < maxsum) continue;
            vector<string> data(2);
            data[0] = item.first;
            data[1] = item.second.smax;
            ans.push_back(move(data));
        }
        return ans;
    }
};