分类目录网站做排名,开发软件下载网站,广东网站建设服务商,linux主机上传网站目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、核心思想2、题做多了#xff0c;你就会发现#xff0c;这道题属于送分题#xff0c;为什么这样说#xff1f;3、具体解题思路#xff1a; 五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B… 目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、核心思想2、题做多了你就会发现这道题属于送分题为什么这样说3、具体解题思路 五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中刷题点这里 专栏导读
本专栏收录于《华为OD机试JAVA真题A卷B卷》。
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。
一、题目描述
在一个狭小的路口每秒只能通过一辆车假设车辆的颜色只有 3 种找出 N 秒内经过的最多颜色的车辆数量。
三种颜色编号为0 1 2
二、输入描述
第一行输入的是通过的车辆颜色信息[0,1,1,2] 代表4 秒钟通过的车辆颜色分别是 0 , 1 , 1 , 2
第二行输入的是统计时间窗整型单位为秒
三、输出描述
输出指定时间窗内经过的最多颜色的车辆数量。
四、解题思路
1、核心思想 输出指定时间窗内经过的最多颜色的车辆数量。 题读三遍其义自见。
在一个狭小的路口每秒只能通过一辆车假设车辆的颜色只有 3 种找出 N 秒内经过的最多颜色的车辆数量。
比如输入
0 1 2 2 1 0 4
4秒内经过的最多颜色的车辆数量。
4秒内经过了那几辆车0 1 2 2
颜色最多的车辆是2数量是2即输出2。
2、题做多了你就会发现这道题属于送分题为什么这样说
题意简单一看题目就秒懂通过map实现即可
有的人可能想到滑动窗口双指针不麻烦吗通过考试拿满分才是王道。
算法嘛能用简单的绝不用复杂的。
3、具体解题思路
遍历第一行输入的通过的车辆颜色信息遍历的长度是统计时间窗定义一个mapkey每辆车的颜色信息value统计时间窗内出现的次数。获取map中值最大的值即输出结果。
五、Java算法源码
package com.guor.od;import java.util.*;public class OdTest02 {/*** 最多颜色的车辆* 输出指定时间窗内经过的最多颜色的车辆数量。*/public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 通过的车辆颜色信息[0,1,1,2] 代表4秒钟通过的车辆颜色分别是 0,1,1,2String[] arr scanner.nextLine().split( );// 统计时间窗int number Integer.valueOf(scanner.nextLine());/*** key每辆车的颜色信息* value统计时间窗内出现的次数*/MapString, Integer map new HashMapString, Integer();for (int i 0; i number; i) {if (map.containsKey(arr[i])) {map.put(arr[i], map.get(arr[i]) 1);} else {map.put(arr[i], 1);}}System.out.println(map);// 获取map中的最大值Integer max 0;for (Map.EntryString, Integer entry : map.entrySet()) {if (entry.getValue() max) {max entry.getValue();}}// 觉得没意思想秀一下演技也可以这样不过不建议这样写max sortByValue(map);System.out.println(max);}/*** 获取map中的最大值*/public static Integer sortByValue(MapString, Integer map) {ListMap.EntryString, Integer list new ArrayListMap.EntryString, Integer(map.entrySet());Collections.sort(list, new ComparatorMap.EntryString, Integer() {public int compare(Map.EntryString, Integer o1, Map.EntryString, Integer o2) {// 降序排列return (o2.getValue() - o1.getValue());}});System.out.println(list);return list.get(0).getValue();}
}六、效果展示
1、输入
0 1 2 2 1 0 5
2、输出
2 下一篇华为OD机试 - 荒岛求生 - 栈StackJava 2023 B卷 100分
本文收录于华为OD机试JAVA真题A卷B卷
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。