1366 通过投票对团队排名
题目描述:
现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。
排名规则如下:
参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在多个团队并列的情况,将继续考虑其「排位第二」的票的数量。以此类推,直到不再存在并列的情况。
如果在考虑完所有投票情况后仍然出现并列现象,则根据团队字母的字母顺序进行排名。
给你一个字符串数组 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
方法1:
主要思路:解题链接汇总
(1)使用unordered_map<char,vector> graph统计原始投票中各个字符获得的各个名次的数量;
(2)vector<pair<char,vector>> 转为对应的数组,方便排序,定义排序的规则是将pair的second按照降序排序,然后将first按照升序排序;
(3)按照排好的序,生成结果字符串;
class Solution {public:string rankTeams(vector<string>& votes) {unordered_map<char,vector<int>> graph;for(char&ch:votes[0]){graph[ch].resize(votes[0].size());//预置大小}for(string& vote:votes){//统计for(int i=0;i<vote.size();++i){++graph[vote[i]][i];}}//转为数组vector<pair<char,vector<int>>> mp(graph.begin(),graph.end());//按照题意进行排序sort(mp.begin(),mp.end(),[](auto&lhs,auto&rhs){return lhs.second>rhs.second||(lhs.second==rhs.second&&lhs.first<rhs.first);});string str;//生成结果字符串for(int i=0;i<mp.size();++i){str+=mp[i].first;}return str;}
};
1366 通过投票对团队排名相关推荐
- LeetCode 1366. 通过投票对团队排名(自定义排序)
1. 题目 现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位. 排名规则如下: 参赛团队的排名次序依照其所获「排位第一」的 ...
- php 投票票数一样排名,微信刷票算吗?怎么刷微信投票票数php
好多的投票活动都是使用的一个软件,可以设置成不同的票次,例如有的可以一次投一票,也有的可以投五票.还可以设置不同的活动期限,有的活动只有一周的投票时间,有的活动是十天,这些都是可以设置的,根据参与者不 ...
- 如何学好C语言--你的学渣朋友告诉你
光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...
- leetcode题目
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>Lee ...
- LeetCode 1365 - 1368
有多少小于当前数字的数字 枚举一下每个数,对于每一个数再去遍历一下数组当中的所有其他数,求有多少个数比它小 class Solution { public:vector<int> smal ...
- seo模拟点击软件_网站用软件刷排名好不好?
最近,有些同事和朋友问我一些关于百度刷排名的问题,主要是利用一些刷网站排名的软件来欺骗百度,这也让我想起了曾经看到过的一则消息,两个SEO人员利用软件刷百度排名,影响百度搜索结果的方式,为自己创收,结 ...
- [案例][激励]关于个人贡献与团队贡献的激励制度(结合IT开发考虑)
1. 案例背景 今天2021-04-16,与前公司(教育管理SAAS)的客户朋友(机构的IT负责人)吃饭聊天,其中提及他们最近老板推行了一个制度,暂且叫"三人行"制度吧,制度的大体 ...
- Datawhale浙大分享(附投票结果)
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale线下 地点:浙江大学玉泉校区 11.28号,Datawhale在浙江大学玉泉校 ...
- 白帽专访丨大家好,我们是渊龙Sec安全团队
渊龙Sec安全团队(英文名:Aabyss Team)是来自五湖四海的网络安全从业者和各大高校学生,共同自发组织成立的非营利性研究机构.团队以网络安全领域为焦点,倡导健康的中国信息安全文化为宗旨- &q ...
最新文章
- OC HelloWord开始学习 1
- java 内存溢出的分类_【深入理解Java虚拟机】读后感:JVM内存划分与内存溢出小结...
- 多源计算机培训,多源数据汇聚的多流形学习算法研究
- python基础:多级菜单
- Binder学习笔记(九)—— 服务端如何响应Test()请求 ?
- 现代通信原理3.3:两个重要的信号处理模块-乘法器与滤波器
- SSM实现增删改查(IDEA)
- Html5开发工具介绍
- CRM八面体:客户关系管理成功案例1 荷兰皇家航空 KLM Royal Dutch Airlines
- 大学生转入计算机专业申请书,计算机系大学生助学金申请书1000字
- 用Pandas做透视表
- unity 2d地图tilemap滚轮缩放出现缝隙解决办法
- Python win32com初步实现将批量的Word文件信息统计写入同一Excel表格中
- ExecuteNonQuery方法和ExecuteScalar方法的区别
- Android电子书翻页效果
- 嵌入式硬件开发之三——绘制原理图
- Coursera 国内无法登陆问题
- 功率MOS管驱动设计与PCB layout注意事项
- 茅台抢购脚本详细教程, 另已将茅台抢购做成了一个软件
- 国企,外企,还是民企?
热门文章
- jupyter快捷键
- 盘点:论坛达人必备的网络英文词汇
- opencv在mfc窗口显示图片
- 从 Linux 安全看,eBPF 的出现是“天使”还是“恶魔”?
- Docker Commit Push Weblogic JDBC应用程序
- 统计学习方法- 统计学习方法概论
- 100G光模块之后,200G,400G谁将成为市场宠儿
- 武汉理工大学二学期c语言作业,20秋武汉理工大学建筑CAD及软件应用-作业二答案...
- 2020必读的12本机器学习书籍汇总
- 如何才能分享商用WiFi市场蛋糕