news 2026/5/4 16:35:38

(新卷,100分)- 通信误码(Java JS Python)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 通信误码(Java JS Python)

(新卷,100分)- 通信误码(Java & JS & Python)

题目描述

信号传播过程中会出现一些误码,不同的数字表示不同的误码ID,取值范围为1~65535,用一个数组记录误码出现的情况,
每个误码出现的次数代表误码频度,请找出记录中包含频度最高误码的最小子数组长度。

输入描述

误码总数目:取值范围为0~255,取值为0表示没有误码的情况。
误码出现频率数组:误码ID范围为1~65535,数组长度为1~1000。

输出描述

包含频率最高的误码最小子数组长度

用例
输入5
1 2 2 4 1
输出2
说明频度最高的有1和2,频度是2(出现的次数都是2)。
可以包含频度最高的记录数组是[2 2]和[1 2 2 4 1],
最短是[2 2],最小长度为2。
输入7
1 2 2 4 2 1 1
输出4
说明频度最高的是1和2,最短的是[2 2 4 2]
题目解析

简单的排序题。

首先,我们统计出误码数组各个误码的出现过的索引值,假设统计到idxs对象中,属性是误码,属性值是数组,记录误码出现过的索引位置。

然后将idxs对象的所有属性值(各个误码出现过的索引位置数组)拎出来,即Object.values,然后对这些索引位置数组,进行排序,先按照索引位置数组长度进行排序,长度越长,说明频率越高,排序越靠前,如果两个数组长度相同,则看索引跨度,即索引数组的头元素索引和尾元素索引的差距,差距越小,越靠前。这样排序后,得到的首元素数组的首尾索引跨度就是题解。


JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines = []; rl.on("line", (line) => { lines.push(line); if (lines.length == 1) { const total = lines[0] - 0; if (total == 0) { console.log(0); lines.length = 0; } } if (lines.length === 2) { const arr = lines[1].split(" ").map(Number); console.log(getResult(arr)); lines.length = 0; } }); /** * @param {*} arr 误码出现频率数组 */ function getResult(arr) { const idxs = {}; for (let i = 0; i < arr.length; i++) { const code = arr[i]; idxs[code] ? idxs[code].push(i) : (idxs[code] = [i]); } let maxSize = 0; let minLen = 0; for (let values of Object.values(idxs)) { const size = values.length; const len = values.at(-1) - values.at(0) + 1; if (size > maxSize || (size == maxSize && len < minLen)) { maxSize = size; minLen = len; } } return minLen; }
Java算法源码
import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } System.out.println(getResult(arr)); } /** * @param arr 误码出现频率数组 * @return 包含频率最高的误码最小子数组长度 */ public static int getResult(int[] arr) { HashMap<Integer, ArrayList<Integer>> idxs = new HashMap<>(); for (int i = 0; i < arr.length; i++) { Integer code = arr[i]; idxs.putIfAbsent(code, new ArrayList<>()); idxs.get(code).add(i); } int maxSize = 0; int minLen = 0; for (ArrayList<Integer> value : idxs.values()) { int size = value.size(); int len = value.get(value.size() - 1) - value.get(0) + 1; if (size > maxSize || (size == maxSize && len < minLen)) { maxSize = size; minLen = len; } } return minLen; } }
Python算法源码
# 算法入口 def getResult(arr): """ :param total: 误码总数目 :param arr: 误码出现频率数组 :return: 包含频率最高的误码最小子数组长度 """ idxs = {} for i in range(len(arr)): code = arr[i] if idxs.get(code) is None: idxs[code] = [i] else: idxs[code].append(i) maxSize = 0 minLen = 0 for values in idxs.values(): size = len(values) length = values[-1] - values[0] + 1 if size > maxSize or (size == maxSize and length < minLen): maxSize = size minLen = length return minLen # 输入获取 total = int(input()) if total == 0: print(0) else: arr = list(map(int, input().split())) print(getResult(arr))
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 16:34:44

(新卷,200分)- 报文解压缩(Java JS Python)

(新卷,200分)- 报文解压缩&#xff08;Java & JS & Python&#xff09;题目描述为了提升数据传输的效率&#xff0c;会对传输的报文进行压缩处理。输入一个压缩后的报文&#xff0c;请返回它解压后的原始报文。压缩规则&#xff1a;n[str]&#xff0c;表示方括号内部的…

作者头像 李华
网站建设 2026/4/28 15:48:49

河北石家庄/山东济南/天津商场美陈氛围升级设计公司【力荐】

在华北的商业图景中&#xff0c;商场正逐渐成为连接地域文化与当代生活的视觉载体。石家庄的质朴、济南的泉韵、天津的多元——三座城市的空间美学呈现出不同的文化肌理&#xff0c;也共同面对着商业氛围如何与城市气质相融的当代命题。肆墨设计顾问有限公司 肆墨设计是一家从事…

作者头像 李华
网站建设 2026/5/4 16:33:43

强烈安利!本科生必用10款一键生成论文工具测评

强烈安利&#xff01;本科生必用10款一键生成论文工具测评 学术写作工具测评&#xff1a;为什么你需要这份2026榜单 在当前高校学术环境日益复杂的背景下&#xff0c;本科生的论文写作任务不仅数量增加&#xff0c;对质量与规范的要求也不断提升。面对选题困难、文献整理繁琐、…

作者头像 李华
网站建设 2026/5/4 16:35:33

B 树 vs B+ 树:为什么 MySQL 用 B+ 树,而不是 B 树?

&#x1f333; B 树 vs B 树&#xff1a;为什么 MySQL 用 B 树&#xff0c;而不是 B 树&#xff1f;B 树不是 B 树的“升级版”&#xff0c;而是为“范围查询”而生的专用结构。如果你学过数据结构&#xff0c;一定听说过 B 树&#xff08;B-Tree&#xff09;&#xff1b; 如果…

作者头像 李华
网站建设 2026/5/1 17:27:58

BLE 蓝牙开发入门:用手机控制开发板 LED

&#x1f4f1; BLE 蓝牙开发入门&#xff1a;用手机控制开发板 LED学 BLE&#xff0c;不从点灯开始&#xff0c;等于白学。 这一篇&#xff0c;我们用最经典、成功率最高的 BLE Demo&#xff1a; 手机 → 蓝牙 → 单片机 → 控制 LED 帮你真正入门 BLE&#xff0c;而不是只停留…

作者头像 李华
网站建设 2026/4/29 21:17:09

MySQL + MQ 最终一致性终极方案:Outbox + 幂等 + 补偿 + 对账全解析

适用对象:后端架构师 / 高级开发 / 分布式系统设计者 适用场景:订单系统、支付系统、库存系统、账户系统、积分系统、异步解耦系统 MQ 示例:RocketMQ(Kafka、Pulsar 原理一致) 一、问题背景:为什么分布式系统一定会“不一致”? 在微服务架构中,最常见的模式是: 业务服…

作者头像 李华