当前位置: 首页 > news >正文

华为OD机试 - 明日之星选举(Java 新系统 100分)

华为OD机试 新系统 题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给定一组选票votes[],vote[i]代表第i张选票的内容,包含一个字符串 “zhangsan,hanmei”,表示推荐zhangsan成为明日之星,反对hanmei成为明日之星。赞成或返回使用逗号(,)分割。

给定一个数组n,表示最后将筛选赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

注意:

• 1 <= votes.length <= 500

• 1 <= votes[i].length <= 20

• vote[i]由小写字母和逗号组成,且最多只有一个逗号。

• vote[i]中赞成票必选,反对票可选。

• n的取值范围为[1, 不同姓名的数量]

二、输入描述

第一行输入为M,表示选票的数量,其中 1 <= M <= 500

接下来M行为选票具体内容

最后一行输入为N,表示最终当选明日之星的人员个数 1 <= N <= 不同姓名的数量

三、输出描述

输出一个字符串,返回当选的N个人的姓名,顺序排列,逗号分割。

四、测试用例

测试用例1:

1、输入

6
zhangsan,hanmei
zhangsan,lisi
lisi
lisi
wangwu
hanmei
2

2、输出

zhangsan,lisi

3、说明

zhangsan:赞成2,反对0

lisi:赞成2,反对1

hanmei:赞成1,反对1

wangwu:赞成1,反对0

zhangsan 和 lisi 赞成票相同,比较反对票,zhangsan 反对更少,所以更靠前。

测试用例2:

1、输入

4
zhangsan,lisi
lisi,wangwu
wangwu,qianliu
qianliu,zhangsan
2

2、输出

lisi,qianliu

3、说明

四个人赞成票都为 1:

zhangsan:反对1

lisi:反对0

wangwu:反对1

qianliu:反对0

先按反对票升序,得到 lisi、qianliu 更靠前;
再按字典序,lisi 在 qianliu 前面。

五、解题思路

1、题意分析

每张选票格式为:

“zhangsan,hanmei”:表示赞成 zhangsan,反对 hanmei

“lisi”:表示只赞成 lisi,没有反对人

最后要从所有出现过的人中,选出前 N 个,排序规则为:

  1. 赞成票多的靠前
  2. 如果赞成票相同,则反对票少的靠前
  3. 如果赞成票和反对票都相同,则名字字典序小的靠前

2、统计 + 排序

  1. 遍历所有投票,统计每个人的赞成票和反对票
  2. 把所有姓名取出来
  3. 按题目要求自定义排序
  4. 取前 N 个输出

六、Java算法源码

publicclassOdTest{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);// 读取选票数量 Mintm=Integer.parseInt(scanner.nextLine().trim());// 使用 HashMap 统计每个人的【赞成票数】和【反对票数】// key:姓名// value:int[2]// value[0] -> 赞成票数// value[1] -> 反对票数Map<String,int[]>map=newHashMap<>();// 逐行读取选票for(inti=0;i<m;i++){Stringvote=scanner.nextLine().trim();// 赞成票必有,反对票可无,所以 split 后长度可能为 1 或 2String[]parts=vote.split(",");// 处理赞成人StringsupportName=parts[0];map.putIfAbsent(supportName,newint[2]);map.get(supportName)[0]++;// 处理反对人(如果存在)if(parts.length==2&&parts[1].length()>0){StringopposeName=parts[1];map.putIfAbsent(opposeName,newint[2]);map.get(opposeName)[1]++;}}// 读取最终需要输出的前 N 个人intn=Integer.parseInt(scanner.nextLine().trim());// 将所有候选人姓名取出放入列表中,准备排序List<String>names=newArrayList<>(map.keySet());// 排序规则:// 1. 赞成票数降序(越多越靠前)// 2. 反对票数升序(越少越靠前)// 3. 姓名字典序升序names.sort((a,b)->{int[]cntA=map.get(a);int[]cntB=map.get(b);// 先比较赞成票,降序if(cntA[0]!=cntB[0]){returncntB[0]-cntA[0];}// 再比较反对票,升序if(cntA[1]!=cntB[1]){returncntA[1]-cntB[1];}// 最后比较姓名字典序,升序returna.compareTo(b);});// 取前 N 个姓名,并按要求用逗号拼接输出StringBuildersb=newStringBuilder();for(inti=0;i<n;i++){if(i>0){sb.append(",");}sb.append(names.get(i));}System.out.print(sb.toString());scanner.close();}}

七、效果展示

1、输入

6
a,b
a,c
b
b
c,a
d,a
2

2、输出

b,a

3、说明

统计结果:

a:赞成2,反对2

b:赞成2,反对1

c:赞成1,反对1

d:赞成1,反对0

a 和 b 的赞成票都为 2,比较反对票,b 更少,所以 b 在前。


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 新系统 200分)

🏆本专栏收录于《华为OD机试(JAVA)真题》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

http://www.jsqmd.com/news/632168/

相关文章:

  • AI编程时代,人类程序员还剩下什么?堂
  • Spring Data 2026 高级查询:优雅处理复杂数据操作
  • 【IIC通信】Chap.2 从“线与”到“时序”:I2C总线协议深度解析与实战信号分析
  • 智能车竞赛独轮组信标灯系统全解析:从硬件选型到实战调试技巧
  • 2026黄花梨家具工厂推荐:南通小叶紫檀家具、南通红木家具工厂、南通红木屏风隔断、南通红木床生产厂家、南通红木案几工厂选择指南 - 优质品牌商家
  • **BERT在自然语言处理中的应用:从理论到代码实践**在深度学习飞速发展的今天,**BERT(Bidirectiona
  • 基于STM32F407与W5500的HAL库TCP通信实战指南
  • 神似赵丽颖!苏棋《无限超越班4》惊艳登场 实力晋级引爆热议
  • 2026年4月好吃的火锅品牌推荐,火锅店/社区火锅/特色美食/火锅/美食,火锅品牌推荐分析 - 品牌推荐师
  • 【实战教程】从零开发Chrome扩展:自动采集小红书评论并接入DeepSeek AI
  • C语言入门:秒懂数据类型
  • 技术判断力之AI三问姑
  • 加蓬BIETC认证哪家可靠:多哥ECTN认证/布基纳法索ECTN认证/贝宁ECTN认证/几内亚ECTN认证/利比里亚ECTN认证/选择指南 - 优质品牌商家
  • 动态数码管鬼影问题全攻略:从51单片机消影代码到TM1637芯片方案
  • 基于STM32与HJ-XJ5的五路灰度传感器PID巡线实战解析
  • 【实战】ESP32 + LN298N 驱动编码器推杆:从零搭建行程闭环控制系统
  • C语言程序设计基础
  • 【51单片机非精准计时2个外部中断启停】2023-5-29
  • 如何在6小时内将小说变成爆款推文视频?TaleStreamAI完整指南
  • FPGA实战:在Quartus II里给你的16位除法器做个“体检”——从仿真、时序分析到资源消耗全流程
  • 2026年热门的青岛锅炉养护剂实力工厂推荐 - 行业平台推荐
  • Vivado FFT IP核避坑指南:从Matlab数据生成到FPGA验证的完整流程
  • 2026年口碑好的专精特新中小企业申报/2026年专精特新申报综合评价公司 - 行业平台推荐
  • PDE (Processing D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v..德
  • Allegro Stroke功能深度玩法:除了快捷命令还能做什么?从L型轨迹到复杂图案的进阶指南
  • Windows 11系统优化终极指南:Win11Debloat一键清理与隐私保护工具
  • 不锈钢彩涂板哪家品种全
  • 从日志中挖掘价值:构建Agent行为分析平台以发现优化点与异常模式
  • 2026乡村路灯技术全解析:太阳能路灯质量、市政太阳能路灯、市政路灯、庭院景观路灯、户外路灯、智慧路灯、湖南太阳能路灯厂家选择指南 - 优质品牌商家
  • Function Calling详解:让AI连接现实世界