跳到主要内容

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;
}
};