2020年3月11日 下午12:02
1366. 通过投票对团队排名
- return 1:第一个元素在前
- return 0:第二个元素在前
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26class Solution {
public:
string rankTeams(vector<string>& votes) {
int m = votes.size();
string v = votes[0]; // 准备1:排序对象
map<char, map<int, int>> f; // 准备2:排序根据
// 统计:Build array rank where rank[i][j] is the number of votes for team i to be the j-th rank.
for (auto s : votes)
{
for (int i = 0; i < s.size(); ++ i)
f[s[i]][i] ++;
}
sort(v.begin(), v.end(), [&](char a, char b) -> bool
{
// 思考,有哪些条件就可以返回了?
for (int i = 0; i < v.size(); ++ i)
{
if (f[a][i] > f[b][i]) return 1;// 返回条件1
if (f[a][i] < f[b][i]) return 0;// 返回条件2
}
return a < b; // 返回条件三
});
return v;
}
};