日常编码练习

news2025/2/28 23:20:56

通过投票对团队排名

题目要求:

解题思路:

思路:以示例1为例

1、我们需要去遍历该数据结构,同时记录每个字符出现的次数。为此需要定义一张哈希表来建立映射关系。

:哈希表仅仅起到了两个作用

①:建立映射关系

②:统计数据个数

而哈希表默认的排序是不一定满足最终结果的,因此最终还需要我们重新排序。

通过哈希表,我们可以建立下述映射关系

字符A、B、C分别对应一个由vector<int> 构成的数据结构,内部用于记录不同名次出现的次数。

2、建立完映射关系后遍历votes数据结构,统计每个字符不同排名出现的次数。

3、将哈希表中的数据拷贝到vector当中,使用sort函数,并自己编写一个比较方法重新排序

:不要傻傻的将题目中所有提到的点试图定义一个变量去形容,就比如本题中的排名,数组、vector、string这三类下标本身就是从小到大开始,就能够起到排名这个作用。

实现代码:

struct compare
    {
        bool operator()(const pair<char,vector<int>>& x1, const pair<char,vector<int>> x2)
        {
            return x1.second > x2.second || (x1.second == x2.second && x1.first < x2.first);
        }
    };
    
    string rankTeams(vector<string>& votes) {
        int team_count = votes[0].size(); //队伍数量
        int voter_count = votes.size(); //投票人数
        unordered_map<char,vector<int>> ranking;//哈希表 ranking
        for(int i = 0; i < team_count; i++)//建立映射关系
        {
            ranking[votes[0][i]].resize(team_count,0);//votes[0] 指向"ABC" [i] 是遍历"ABC"中的每个元素,resize()是为其每个元素开辟一个team_count大小的,且初始化为0的vector<int>类型
        }
        for(auto& str : votes)//统计每个字符各自排名出现的次数
        {
            for(int i = 0; i < team_count; i++)
            {
                ranking[str[i]][i]++;//str是string类 str[i]是对应的字符元素,ranking[str[i]]是哈希表中对应字符,第二个[i]是当前排名ranking[str[i]][i]++,就是哈希表中,对应字符的对应排名次数+1;
            }
        }
        vector<pair<char,vector<int>>> result(ranking.begin(),ranking.end());//保存哈希表中的数据
        sort(result.begin(),result.end(),compare());//自己编写比较方法,并重新排序

        string s;
        for(auto w : result)
        {
            s +=  w.first;
        }
        return s;
    }

:在vector类中,operator比较大小 的默认规则是:下标从左往右,依次比较对应元素的大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J实现原理分析

文章目录 官网SLF4J 简单使用案例分析SLF4J 获取 Logger 的原理获取 ILoggerFactory 的过程获取 Logger 的过程SLF4J 与底层日志框架的集成 小结 官网 https://slf4j.org/ Simple Logging Facade for Java &#xff08;SLF4J&#xff09; 用作各种日志记录框架&#xff08;e.g…

HALCON中用于分类的高斯混合模型create_class_gmm

目录 一、创建用于分类的高斯混合模型函数二、代码和效果展示三、相关函数 一、创建用于分类的高斯混合模型函数 create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)create_class_gmm创建用于分类的高斯…

在实际开发中,如何权衡选择使用哪种数据结构和算法?

学习数据结构与算法有一段时间了&#xff0c;听音频、看视频、看专栏、看书、抄书&#xff0c;尝试了很多种方法&#xff0c;今天在 专栏 中看到一篇文章&#xff0c;觉得很不错&#xff0c;摘抄如下。 学习数据结构和算法&#xff0c;不要停留在学院派的思维中&#xff0c;只把…

Airbnb/Booking 系统设计(high level architecture)

原文地址 CodeKarle: Airbnb System Design | Booking.com System Design B站搜 “Airbnb System Design” 有视频版本 需求&#xff1a; 功能性需求 系统用户包括商家和客人。 Hotel - 商家&#xff08;拥有hotel的人&#xff09; onboarding - 商家可以入住系统。 update…

如何在谷歌浏览器中清理无效的扩展

谷歌浏览器是一款功能强大且广受欢迎的网络浏览器&#xff0c;它允许用户安装各种扩展来增强功能。然而&#xff0c;随着时间的推移&#xff0c;一些扩展可能变得无效或不再需要&#xff0c;这时就需要清理这些无效的扩展以减少浏览器的负担并提升性能。 一、步骤详解 1. 打开…

MySQLOCP考试过了,题库很稳,经验分享。

前几天&#xff0c;本人参加了Oracle认证 MySQLOCP工程师认证考试 &#xff0c;先说下考这个证书的初衷&#xff1a; 1、首先本人是从事数据库运维的&#xff0c;今年开始单位逐步要求DBA持证上岗。 2、本人的工作是涉及数据库维护&#xff0c;对这块的内容比较熟悉&#xff…

艾体宝产品丨加速开发:Redis 首款 VS Code 扩展上线!

Redis 宣布推出其首款专为 VS Code 设计的 Redis 扩展。这一扩展将 Redis 功能直接整合进您的集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在简化您的工作流程&#xff0c;提升工作效率。 我们一直致力于构建强大的开发者生态系统&#xff0c;并在您工作的每一步提…

银河麒麟系统安装Wireshark抓包工具

麒麟系统安装Wireshark抓包工具 1. 麒麟SP1安装Wireshark 【1】. 安装Wireshark 在线安装wireshark 命令如下&#xff1a; apt-get install wireshark-qt软件包设置 弹出对话框&#xff0c;选择【是】选项。 安装完成。 【2】. 使用Wireshark 如果是普通用户&#xff0c;…

WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)

在一个WPF项目中要用到样条曲线&#xff0c;必须过顶点&#xff0c;圆滑后还不能太走样&#xff0c;捣鼓一番&#xff0c;发现里面颇有玄机&#xff0c;于是把我多方抄来改造的方法发出来&#xff0c;方便新手&#xff1a; 如上图&#xff0c;看代码吧&#xff1a; ----------…

Redis--持久化策略(AOF与RDB)

持久化策略&#xff08;AOF与RDB&#xff09; 持久化Redis如何实现数据不丢失&#xff1f;RDB 快照是如何实现的呢&#xff1f;执行时机RDB原理执行快照时&#xff0c;数据能被修改吗&#xff1f; AOF持久化是怎么实现的&#xff1f;AOF原理三种写回策略AOF重写机制 RDB和AOF合…

学习路之VScode--自定义按键写注释(插件)

1. 安装 "KoroFileHeader" 插件 首先&#xff0c;在 VScode 中搜索并安装名为 "KoroFileHeader" 的插件。你可以通过在扩展商店中搜索插件名称来找到并安装它。 2. 进入 VScode 设置页面 点击 VScode 左下角的设置图标&#xff0c;然后选择 "设置&q…

开源电子书转有声书整合包ebook2audiobookV2.0.0

ebook2audiobook&#xff1a;将电子书转换为有声书的开源项目 项目地址 GitHub - DrewThomasson/ebook2audiobook 整合包下载 更新至v2.0.0 https://pan.quark.cn/s/22956c5559d6 修改:页面已转为中文 项目简介 ebook2audiobook 是一个开源项目&#xff0c;它能够将电子…

3.5mm耳机接口硬件连接

结构 以最复杂的结构为例 简单的结构无非就是没有MIC&#xff08;麦克风&#xff09;接口 上图的5就是Detect的作用 上面这两款产品都为3.5mm的音频插座&#xff0c;图一 为连接4节的音频座&#xff0c;而且有两个开关&#xff0c;1接地&#xff0c;2接MIC&#xff0c;3接左声…

【贪心算法】贪心算法七

贪心算法七 1.整数替换2.俄罗斯套娃信封问题3.可被三整除的最大和4.距离相等的条形码5.重构字符串 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f…

一文大白话讲清楚CSS元素的水平居中和垂直居中

文章目录 一文大白话讲清楚CSS元素的水平居中和垂直居中1.已知元素宽高的居中方案1.1 利用定位margin:auto1.2 利用定位margin负值1.3 table布局 2.未知元素宽高的居中方案2.1利用定位transform2.2 flex弹性布局2.3 grid网格布局 3. 内联元素的居中布局 一文大白话讲清楚CSS元素…

30. 区间交集

题目描述 给定一组闭区间&#xff0c;其中部分区间存在交集。 任意两个给定区间的交集&#xff0c;称为公共区间(如:[1,2],[2,3]的公共区间为[2,2],[3,5],[3,6]的公共区间为[3,5])公共区间之间若存在交集&#xff0c;则需要合并(如:[1,3],[3,5]区间存在交集[3,3],需合并为[1,5]…

redis cluster实验详解

华子目录 实验环境准备部署redis cluster添加节点删除节点redis cluster集群维护 实验 环境准备 再开3台主机 先把之前3台源码编译的redis删除 [rootredis-node1 ~]# cd /usr/local/redis/ [rootredis-node1 redis]# make uninstall[rootredis-node2 ~]# cd /usr/local/redi…

微服务-服务保护和分布式事务

假如微服务中某个服务出现了故障,那我们需要为这个服务做好一些兜底的方案,健壮性的处理,这就是服务保护.以前我们写的是单体项目,不论项目多复杂,操作多少张表,最终都能够满足事务ACID的特性,但是我们分成了很多个服务之后,由于很多的服务是独立的,有各自的数据库,破坏了事务A…

【已解决】PDF文档有密码怎么办(2024新)免费在线工具PDF2Go

强大的解密工具PDF2Go使用指南 一、PDF2Go简介 PDF2Go是由德国QaamGo公司开发的在线PDF工具箱&#xff0c;以其强大的功能和用户友好的界面而闻名。它不仅免费&#xff0c;而且不需要用户注册或安装任何软件&#xff0c;只需打开浏览器即可使用。 二、功能特点 1. 免费且无需…

Ashy的考研游记

文章目录 摘要12.1112.2012.21 DAY1&#xff08;政治/英语&#xff09;政治英语 12.22 DAY2&#xff08;数学/专业课&#xff09;数学专业课 结束估分 摘要 在24年的12月里&#xff0c;Ashy完成了他的考研冲刺&#xff0c;顺利的结束了他本年度的考研之旅。 在十二月里&#…