一、题目描述
信号传播过程中会出现一些误码,不同的数字表示不同的误码ID,取值范围为1~65535,用一个数组记录误码出现的情况。
每个误码出现的次数代表误码频度,请找出记录中包含频度最高误码的最小子数组长度。
二、输入描述
误码总数目:
取值范围为0 - 255,取值为0表示没有误码的情况。
误码出现频率数组:
误码ID范围为1 - 65535,数组长度为1~1000。
三、输出描述
包含频率最高的误码最小子数组长度。
四、解题思路
- 读取输入的误码总数目 n;
- 初始化一个 HashMap errorMap,用于记录误码出现的次数;
- 初始化一个 ArrayList sourceList,用于记录误码出现的顺序;
- 初始化变量 max 为 0,用于记录误码的最大频度;
- 循环 n 次,读取误码,并进行以下操作:
- 将误码添加到 sourceList 中;
- 如果 errorMap 中已经存在该误码,则将对应的次数加 1;否则,将该误码添加到 errorMap 中,并将次数设置为 1;
- 更新 max 的值为当前误码出现次数和 max 中的较大值;
- 创建一个 ArrayList list,用于记录出现频率最高的误码;
- 遍历 errorMap 中的每个键值对,如果次数等于 max,将误码添