统计射击比赛成绩

package collections;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;import static java.lang.Integer.parseInt;
import static java.lang.System.in;/*** 统计射击比赛成绩* 13* 3,3,7,4,4,4,4,7,7,3,5,5,5* 53,80,68,24,39,76,66,16,100,55,53,80,55*/
public class StatisticsOfShootingCompetitionResults {public static void main(String[] args) throws IOException {// 收集数据源BufferedReader bf = new BufferedReader(new InputStreamReader(in));int n = parseInt(bf.readLine()); // N次射击List<Integer> ids = Arrays.stream(bf.readLine().split(",")).limit(n).map(Integer::parseInt).toList();// userIdList<Integer> scores = Arrays.stream(bf.readLine().split(",")).limit(n).map(Integer::parseInt).toList();// 得分bf.close();// 收集成绩信息Map<Integer, List<Integer>> res = new HashMap();for (int i = 0; i < n; i++) {Integer id = ids.get(i);Integer score = scores.get(i);List<Integer> orDefault = res.getOrDefault(id, new LinkedList<>());orDefault.add(score);res.put(id, orDefault);}String collect = res.entrySet().stream().filter(per -> (per.getValue().size() >= 3)) // 成绩少于3个成绩无效.sorted((p1, p2) -> {// 成绩降序→取前三→求和int sum1 = p1.getValue().stream().sorted(Comparator.reverseOrder()).limit(3).mapToInt(Integer::valueOf).sum();int sum2 = p2.getValue().stream().sorted(Comparator.reverseOrder()).limit(3).mapToInt(Integer::valueOf).sum();// 最大成绩降序前三加和降序,加和相同的话Id降序if (sum1 == sum2) {return p2.getKey() - p1.getKey();} else {return sum2 - sum1;}}).map(Map.Entry::getKey) // 取得员工Id.map(String::valueOf) // 类型不转没办法joining.collect(Collectors.joining(",")); // 拼接字符串// 输出结果System.out.println(collect);}
}

【算法题】统计射击比赛成绩相关推荐

  1. 【华为OD机试真题 Java】统计射击比赛成绩

    前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你.关于OD机试流程.面经.面试指导等,如有任何疑问,欢迎联系我,wechat:steven ...

  2. 【华为OD机试真题 Python】统计射击比赛成绩

    前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你.关于OD机试流程.面经.面试指导等,如有任何疑问,欢迎联系我,wechat:steven ...

  3. 华为OD机试真题 Python 实现【统计射击比赛成绩】

    目录 题目 思路 考点 Code 题目 给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列.条件如下: 1.一个选手可 ...

  4. 【华为机试真题Java】统计射击比赛成绩

    目录 题目描述 输入描述 输出描述 参考示例 参考代码 机试介绍 写在最后 题目描述 给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排 ...

  5. 华为机试真题 Java 实现【统计射击比赛成绩】

    目录 题目 思路 考点 Code 题目 给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列.条件如下: 1.一个选手可 ...

  6. 【华为OD机试 2023 B卷 | 100分】 统计射击比赛成绩(C++ Java JavaScript )

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将 ...

  7. 【华为机试真题 Python】统计射击比赛成绩

    目录 题目描述 输入描述 输出描述 参考示例 参考代码 机试介绍 写在最后

  8. C语言实训 实训项目一 统计歌唱比赛成绩

    实训项目一 统计歌唱比赛成绩 有10名选手参加某歌唱比赛,每位选手演唱自己参赛曲目后,7名评委亮出自己的评分,后台人员会去掉最高分和最低分,将剩下的5个值求平均来计算该选手的比赛得分.比赛结束后,将根 ...

  9. leetcode算法题--统计全为 1 的正方形子矩阵

    原题链接:https://leetcode-cn.com/problems/count-square-submatrices-with-all-ones/ 相关题目:最大正方形 动态规划O(m * n ...

最新文章

  1. C语言各类型变量所占的字节数
  2. atoi,atol,strtod,atof
  3. altium designer布线调整时不自动删除旧线
  4. PHP程序员的学习路线
  5. iOS 生日计算星座
  6. Spring3.0 AOP 详解
  7. iOS--数据存储NSUserDefaults
  8. Firefox Javascript引擎变成单线程
  9. Ubuntu下使用Git_2
  10. 为什么录像总是很暗_深度:为什么看马拉多纳的踢球视频,并不觉得他很厉害?...
  11. 外部方式启动AndroidStudio模拟器
  12. [转] JavaScript 骚操作
  13. c语言2维数组每一行最小值,二维数组每一行最大值
  14. 【id:180】【20分】D. DS二叉树--赫夫曼树解码(不含代码框架)
  15. 对一支圆珠笔进行测试,要从哪些方面进行测试?
  16. python操作Excel【openpy】
  17. 双工位机器人 焊接夹具注意事项 o(╯□╰)o
  18. 阿里CEO逍遥子:学会“用人做事”,而不是“做事用人”
  19. CC1310 底噪测量以及实际意义
  20. 小v上学,老师布置了n个作业

热门文章

  1. 计算机辅助英语词汇教学,浅议计算机辅助英语词汇教学
  2. Docker服务开启TCP端口
  3. 关于iOS开发的发展前景
  4. elasticsearch介绍与使用
  5. Python 爬虫自动下载OpenAI Key Papers
  6. 验证url地址是否有效的方法
  7. 使用js修改url地址参数并修改url地址
  8. 用友U8登录界面显示红叉叉
  9. 200606 系统准备之part1 统计理论复习(可汗学院视频)
  10. 国二C语言选择题知识点总结