1. 题目

现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。

排名规则如下:

  • 参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在多个团队并列的情况,将继续考虑其「排位第二」的票的数量。以此类推,直到不再存在并列的情况。
  • 如果在考虑完所有投票情况后仍然出现并列现象,则根据团队字母的字母顺序进行排名。

给你一个字符串数组 votes 代表全体投票者给出的排位情况,请你根据上述排名规则对所有参赛团队进行排名。

请你返回能表示按排名系统 排序后 的所有团队排名的字符串。

示例 1:
输入:votes = ["ABC","ACB","ABC","ACB","ACB"]
输出:"ACB"
解释:A 队获得五票「排位第一」,没有其他队获得「排位第一」,所以 A 队排名第一。
B 队获得两票「排位第二」,三票「排位第三」。
C 队获得三票「排位第二」,两票「排位第三」。
由于 C 队「排位第二」的票数较多,所以 C 队排第二,B 队排第三。示例 2:
输入:votes = ["WXYZ","XYZW"]
输出:"XWYZ"
解释:X 队在并列僵局打破后成为排名第一的团队。
X 队和 W 队的「排位第一」票数一样,但是 X 队有一票「排位第二」,
而 W 没有获得「排位第二」。 示例 3:
输入:votes = ["ZMNAGUEDSJYLBOPHRQICWFXTVK"]
输出:"ZMNAGUEDSJYLBOPHRQICWFXTVK"
解释:只有一个投票者,所以排名完全按照他的意愿。示例 4:
输入:votes = ["BCA","CAB","CBA","ABC","ACB","BAC"]
输出:"ABC"
解释:
A 队获得两票「排位第一」,两票「排位第二」,两票「排位第三」。
B 队获得两票「排位第一」,两票「排位第二」,两票「排位第三」。
C 队获得两票「排位第一」,两票「排位第二」,两票「排位第三」。
完全并列,所以我们需要按照字母升序排名。示例 5:
输入:votes = ["M","M","M","M"]
输出:"M"
解释:只有 M 队参赛,所以它排名第一。 提示:
1 <= votes.length <= 1000
1 <= votes[i].length <= 26
votes[i].length == votes[j].length for 0 <= i, j < votes.length
votes[i][j] 是英文 大写 字母
votes[i] 中的所有字母都是唯一的
votes[0] 中出现的所有字母 同样也 出现在 votes[j] 中,
其中 1 <= j < votes.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rank-teams-by-votes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 题目意思:类似奥运会金牌榜排名
vector<vector<int>> c;
bool cmp(char& a, char& b)
{for(int j = 0; j < 26; j++){if(c[a-'A'][j] == c[b-'A'][j])continue;return c[a-'A'][j] > c[b-'A'][j];}return a < b;
}
class Solution {public:string rankTeams(vector<string>& votes) {int i, j;c.clear();//全局变量记得清空,leetcode每次调用不会清空vector<int> t(26,0);for(i = 0; i < 26; ++i)c.push_back(t);for(i = 0; i < votes.size(); i++){for(j = 0; j < votes[i].size(); j++)c[votes[i][j]-'A'][j]++;}sort(votes[0].begin(), votes[0].end(), cmp);return votes[0];}
};
  • lambda表达式简洁,注意!!![&]里面写&才可以识别外部变量,表示以引用传入
class Solution {public:string rankTeams(vector<string>& votes) {int i, j;vector<vector<int>> c(26,vector<int>(26,0));for(i = 0; i < votes.size(); i++){for(j = 0; j < votes[i].size(); j++)c[votes[i][j]-'A'][j]++;}sort(votes[0].begin(), votes[0].end(), [&](auto a, auto b){for(int j = 0; j < 26; j++){if(c[a-'A'][j] == c[b-'A'][j])continue;return c[a-'A'][j] > c[b-'A'][j];}return a < b;});return votes[0];}
};

LeetCode 1366. 通过投票对团队排名(自定义排序)相关推荐

  1. 1366 通过投票对团队排名

    题目描述: 现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位. 排名规则如下: 参赛团队的排名次序依照其所获「排位第一」的 ...

  2. LeetCode 937. 重新排列日志文件(自定义排序)

    1. 题目 你有一个日志数组 logs.每条日志都是以空格分隔的字串. 对于每条日志,其第一个字为字母数字标识符.然后,要么: 标识符后面的每个字将仅由小写字母组成,或: 标识符后面的每个字将仅由数字 ...

  3. Cognos开发自定义排序规则的报表和自定义排名报表

    Cognos开发自定义排序规则的报表和自定义排名报表 场景:有一个简单的销售数据分析,可以按照日期,按照商品类型来分析订单笔数和订单金额. 目的:用户可以自定义查看按照不同指标排序的数据,用户可以查看 ...

  4. leetcode数据库题库-178. 分数排名

    leetcode数据库题库-178. 分数排名https://leetcode-cn.com/problems/rank-scores/题目核心是[重复且连续]的排序 ,排序相关函数简单整理下 一.R ...

  5. leetcode【排序】这个自定义排序的比较器感觉不好直接想出来,需要多练欸

    自定义排序,Collections.sort() 介绍Collections.sort() class Solution {public int[] relativeSortArray(int[] a ...

  6. “高调做事,高调做人”?----关于排名和排序

    "高调做事,高调做人"?----关于排名和排序 每个人都有自己的处世哲学."低调做人,你会一次比一次稳健:高调做事,你会一次比一次优秀."这只是一些人的想法,也 ...

  7. 力扣786. 第 K 个最小的素数分数(自定义排序方式)?

    786. 第 K 个最小的素数分数 - 力扣(LeetCode) (leetcode-cn.com) class Solution {public int[] kthSmallestPrimeFrac ...

  8. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  9. SpringDataJpA复杂查询实现自定义排序

    需求: 列表页面实现按合同状态自定义排序 private Specification<TblContractPre> whereClause(final TblContractPre en ...

最新文章

  1. 所谓 jQuery 插件,怎样开发一个 jQuery 插件
  2. 固定导航在网页设计中应用的22个优秀案例
  3. 服务器意外重启导致storm报错的问题处理
  4. libevent 1.4.13 / 源代码文件组织
  5. 抖音右上角一个小黄点是什么_抖音官方入驻视频号,释放了一个什么样的信号?...
  6. ActionScript 3.0 学习笔记三
  7. Apollo进阶课程㉖丨Apollo规划技术详解——Understand More on the MP Difficulty
  8. 计算机网络TCP/IP
  9. 人物志 | KDD Cup 2017双料冠军燕鹏
  10. php生成饼状图 柱形图,求一个饼状图或柱状图php生成类或例子
  11. 英寸、 Picas、 点、 跨度和 Twips 之间的关系
  12. 235.二叉搜索树的最近公共祖先
  13. 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。
  14. 机器学习-降维方法-有监督学习:LDA算法(线性判别分析)【流程:①类内散度矩阵Sw->②类间散度矩阵Sb->计算Sw^-1Sb的特征值、特征向量W->得到投影矩阵W->将样本X通过W投影进行降维】
  15. 求助matlab崩溃问题的解决方案
  16. u盘里的视频文件损坏了怎么修复?
  17. 大数据概论、大数据概念、大数据特点(4V)、Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、大数据应用场景、大数据发展前景、大数据部门间业务流程分析
  18. 后端返给前端的数据格式
  19. ccflow 代码分析
  20. 血栓清道夫机器人_血栓的“清道夫”终于被找到了,每天吃一点,血液不粘,血管不堵...

热门文章

  1. s5pv210——LCD基础理论
  2. Linq To Sql进阶系列 -目录导航
  3. Vue-watch选项
  4. Service Worker,Web Worker,WebSocket的对比
  5. java微信学习 接入
  6. 【翻译】在Ext JS中创建特定主题的重写
  7. Oracle存储过程单步调试方法
  8. 进程之间的通信方式-共享内存
  9. 线程池 调度 java_java调度器和线程池总结
  10. html实现 左图右文_让CSS flex布局最后一行左对齐的N种方法