第一道AC,后来复盘了一下,简化了代码。

题目链接:​​​​​​舆情热词题目链接

思路:本题可以利用LinkedHashMap来保证输入输出顺序,那么在定义比较器时仅考虑频次即可。有个细节:最后输出的结果不能有空格“ ”,否则不通过。可以有两种思路:1.利用优先队列 2.字符串删除空格。

package liuhao.njupt;import java.util.*;public class huawei0406_1 {public static void main (String[] args){Scanner sc = new Scanner(System.in);LinkedHashMap<String, int[]> map = new LinkedHashMap<>();while (sc.hasNextLine()){int N = sc.nextInt();int M = sc.nextInt();sc.nextLine();for (int p = 0; p < M; p ++){String[] title = sc.nextLine().split(" ");String[] paper = sc.nextLine().split(" ");for (int k = 0;  k < title.length; k ++){String s = title[k];if (!map.containsKey(s)){map.put(s, new int[]{k, 1, 0}); //int[]存放:下标,标题个数,正文中的个数;}else {map.get(s)[1] += 1;}}for (int i = 0; i < paper.length; i ++){String s1 = paper[i];if (!map.containsKey(s1)){map.put(s1, new int[]{i, 0, 1}); //int[]存放:下标,个数,正文中的个数;}else {map.get(s1)[2] += 1;}}}List<Map.Entry<String, int[]>> list = new ArrayList<>(map.entrySet());list.sort((o1, o2) -> {int[] arr1 = o1.getValue();int[] arr2 = o2.getValue();int v1 = arr1[1]*3 + arr1[2];int v2 = arr2[1]*3 + arr2[2];if (v1 != v2){return v2 - v1;}return 0;});//删除最后的空格StringBuilder sb = new StringBuilder();for (Map.Entry<String, int[]> entry : list){sb.append(entry.getKey()).append(" ");}String[] str = sb.toString().split(" ");StringBuilder sb1 = new StringBuilder();for (int i = 0; i < N - 1; i ++){sb1.append(str[i]).append(" ");}sb1.append(str[N-1]);System.out.print(sb1.toString());}}
}

//使用优先队列

PriorityQueue<Map.Entry<String, Integer[]>> pq = new PriorityQueue<>((o1, o2) -> {Integer[] arr1 = o1.getValue();Integer[] arr2 = o2.getValue();Integer v1 = 3*arr1[1]+arr1[3];//频率Integer v2 = 3*arr2[1]+arr2[3];if (!v1.equals(v2)){return v2 - v1;}return 0;});pq.addAll(map.entrySet());for (int i = 0; i < N-1; i ++){Map.Entry<String, Integer[]> e2 = pq.poll();assert e2 != null;System.out.print(e2.getKey() + " ");}System.out.print(Objects.requireNonNull(pq.poll()).getKey());

运行结果:

2022华为机试4.6第一题舆情热词题解相关推荐

  1. 华为机试第十五题:HJ15 求int型正整数在内存中存储时1的个数

    华为机试第十五题:HJ15 求int型正整数在内存中存储时1的个数 一.网址链接 二.题目描述 ①描述 ②输入描述 ③输出描述 ④示例一 ⑤示例二 三.代码实现 ①Java代码实现 ②C++代码实现 ...

  2. 2022华为机试真题 C++ 实现【快速人名查找】

    目录 题目 思路 考点 Code 题目 给一个字符串,表示用', \'分开的人名.然后给定一个字符串,进行快速人名查找,符合要求的输出. 快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串, ...

  3. 2022华为机试真题 C++ 实现【快递运输】

    目录 题目 思路 考点 Code 题目 运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递同时不能让货车超载,需要计算最多能装多少个快递. 注:快递的体积不受限制 快递数最多1000个 货 ...

  4. 2022华为机试真题 C++ 实现 【字符串子序列II】

    目录 题目 思路 核心考点 Code 题目 给定字符串 target 和 source,判断 target是否为 source 的子序列.你可以认为target和 source 中仅包含英文小写字母. ...

  5. 2022华为机试真题 C++ 实现【分苹果】

    目录 题目 思路 核心考点 Code 题目 [分苹果] A.B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 010 ...

  6. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  7. 【华为机试真题 Python实现】2022年4季度最新机试题

    文章目录 2022年4季度最新机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值计 ...

  8. 【华为机试真题 Python实现】篮球比赛【2022 Q1 Q2 | 200分】

    文章目录 前言 题目描述 示例 1 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您 ...

  9. 【华为机试真题详解】数大雁【2022 Q2 | 100分】

    文章目录 前言 详解试题 1419. 数青蛙 华为机试题. 数大雁 题目解析 数青蛙代码实现 数大雁不考虑叫声不完整的情况 数大雁考虑叫声不完整的情况 前言 <华为机试真题详解>专栏含牛客 ...

最新文章

  1. Python Module_openpyxl_styles 样式处理
  2. 【转】Asp.Net中Excel操作权限的问题
  3. Python maximum recursion depth exceeded while calling a Python object (gevent的SSL无限递归错误)的问题解决
  4. Java过滤器详细文档,简介,实例,应用
  5. oracle显示数据中心类异常,Oracle_10g数据库基础教程-参考答案
  6. RestTemplate远程接口调用
  7. 如何在div中垂直对齐图像
  8. 商超小程序服务器配置,超市商超小程序在线开店的教程
  9. hardmard积 用什么符号表示_[关于数学哲学的科普]为数学学习准备的基础数理逻辑(用自然推理系统展现的命题演算以及一阶谓词演算)...
  10. Python 的 setup.py 详解
  11. 办公室专用表格大全,公司管理常用表格公司制度大全
  12. 机械硬盘显示位置不可用无法访问介质受写入保护
  13. 2019-12-23《踩坑日记:虚拟机安装ESXI后无法访问/失联》
  14. 操作系统——操作系统发展历程及基本概念
  15. hackthebox-admirer (adminer渗透 python-library-hijacking)
  16. 浅谈Word中文档标题及编号的设置
  17. Docker容器基础(二) - Docker公司的入场
  18. ultralytics/yolov3训练预测自己数据集的配置过程
  19. 运算放大器芯片输出扩流电路三例
  20. 银行卡校验规则(Luhn算法)

热门文章

  1. 全球生命科学领域正面临转型,AI+生命科学元年正在开启
  2. i.MX6q+QNX(学习笔记一)
  3. 讯闪4.92带图片教程
  4. vue.js毕业设计,基于vue.js前后端分离电影院售票系统(H5移动项目) 开题报告
  5. dell 安装显卡驱动,重启进不了系统解决方法
  6. sys/types.h
  7. 第1章 threejs项目实战-构建3D立体仓库车间(智慧物流中心)-效果展示
  8. c语言程序设计培训课件打包,C语言程序设计实例PPT培训课件.ppt
  9. 怎么控制当前页面不左右滑动,可以上下滑动
  10. 论文阅读:DuEE:A Large-Scale Dataset for Chinese Event Extraction in Real-World Scenarios(附数据集地址)