华为OD机试真题——文件目录大小(2025 A卷:100分)Java/python/JavaScript/C++/C语言/GO六种语言最佳实现

article/2025/6/8 5:32:50

在这里插入图片描述

2025 A卷 100分 题型

本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析;
并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式!

2025华为OD真题目录+全流程解析/备考攻略/经验分享

华为OD机试真题《文件目录大小》:


目录

    • 题目名称:文件目录大小
      • 题目描述
      • 示例
    • Java
      • 问题分析
      • 解决思路
      • 代码实现
      • 代码详细解析
      • 综合分析
    • python
      • 题目分析
      • 解决思路
      • Python 代码实现
      • 代码逐行注释
      • 综合分析
      • 示例测试
        • 输入1:
        • 输入2:
      • 总结
    • JavaScript
      • 题目分析
      • 解决思路
      • JavaScript 代码实现
      • 代码逐行注释
      • 综合分析
      • 示例测试
        • 输入1:
        • 输入2:
      • 总结
    • C++
      • 题目分析
      • 解决思路
      • C++ 代码实现
      • 代码逐行解析
      • 综合分析
      • 示例测试
        • 输入1:
        • 输入2:
      • 总结
    • C语言
      • 题目分析
      • 解决思路
      • C 代码实现
      • 代码逐行解析
      • 综合分析
      • 示例测试
        • 输入1:
        • 输入2:
      • 总结
    • GO
      • 题目分析
      • 解决思路
      • Go 代码实现
      • 代码逐行注释
      • 综合分析
      • 示例测试
        • 输入1:
        • 输入2:
      • 总结

题目名称:文件目录大小


知识点:字符串、栈操作(DFS)、逻辑处理
时间限制:1秒
空间限制:256MB
限定语言:不限


题目描述

一个文件目录的数据格式为:目录id,本目录中文件大小,(子目录id列表)。其中:

  • 目录id全局唯一,取值范围为[1, 200]
  • 本目录文件大小范围为[1, 1000]
  • 子目录id列表个数为[0, 10]

输入描述

  • 第一行:两个整数 MN,表示目录个数和待查询的目录id(1 ≤ M ≤ 1001 ≤ N ≤ 200)。
  • 后续 M 行:每行描述一个目录,格式为 目录id 文件大小 (子目录列表),例如 1 20 (2,3)

输出描述

  • 待查询目录及其所有子目录的文件大小之和。

示例

输入1

3 1  
3 15 ()  
1 20 (2)  
2 10 (3)  

输出1

45  

输入2

4 2  
4 20 ()  
5 30 ()  
2 10 (4,5)  
1 40 ()  

输出2

60  

Java

问题分析

这道题目要求计算指定目录及其所有子目录的文件大小总和。我们可以将其视为一个树形结构问题,每个目录作为节点,子目录作为子节点。以下是详细的解决思路和代码实现。

解决思路

  1. 输入解析:首先读取目录数目M和目标目录N,然后逐行解析每个目录的信息,包括目录ID、文件大小和子目录列表。
  2. 数据结构:使用两个哈希表分别存储目录的大小和子目录列表,便于快速查找。
  3. 递归计算:从目标目录开始,递归遍历所有子目录,累加文件大小总和。

代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取目录个数M和待查询的目录id Nint M = scanner.nextInt();int N = scanner.nextInt();scanner.nextLine(); // 跳过剩余换行符// 使用哈希表存储目录的大小和子目录列表Map<Integer, Integer> sizeMap = new HashMap<>();Map<Integer, List<Integer>> childrenMap = new HashMap<>();for (int i = 0; i < M; i++) {String line = scanner.nextLine().trim();// 使用正则表达式按一个或多个空格分割行数据String[] parts = line.split("\\s+");int dirId = Integer.parseInt(parts[0]);int size = Integer.parseInt(parts[1]);String childrenStr = parts[2]; // 子目录列表部分,如"(2,3)"// 处理子目录字符串,提取子目录idchildrenStr = childrenStr.substring(1, childrenStr.length() - 1) // 去掉括号.trim(); // 去除可能存在的首尾空格List<Integer> children = new ArrayList<>();if (!childrenStr.isEmpty()) { // 处理非空子目录列表String[] childIds = childrenStr.split(",");for (String childId : childIds) {childId = childId.trim(); // 去除每个子目录id的前后空格if (!childId.isEmpty()) {children.add(Integer.parseInt(childId));}}}// 将解析后的数据存入哈希表sizeMap.put(dirId, size);childrenMap.put(dirId, children);}// 计算目标目录及其所有子目录的总大小int totalSize = calculateTotalSize(N, sizeMap, childrenMap);System.out.println(totalSize);}// 递归计算目录总大小private static int calculateTotalSize(int dirId, Map<Integer, Integer> sizeMap, Map<Integer, List<Integer>> childrenMap) {// 获取当前目录的大小int sum = sizeMap.get(dirId);// 遍历所有子目录,递归累加for (int childId : childrenMap.get(dirId)) {sum += calculateTotalSize(childId, sizeMap, childrenMap);}return sum;}
}

代码详细解析

  1. 输入处理

    • 使用Scanner读取输入,第一行读取M和N。
    • scanner.nextLine()用于跳过换行符,确保后续读取正确。
  2. 数据结构初始化

    • sizeMap存储目录ID到文件大小的映射。
    • childrenMap存储目录ID到子目录列表的映射。
  3. 解析目录信息

    • 每行按空格分割为三部分:目录ID、文件大小、子目录列表字符串。
    • 处理子目录字符串:去除括号和空格,分割后转为整数列表。
  4. 递归计算总大小

    • 递归函数calculateTotalSize从目标目录开始,累加当前目录大小及其所有子目录的总大小。

综合分析

  1. 高效的数据结构:哈希表提供O(1)时间复杂度的查找,适合快速访问目录信息。
  2. 递归的简洁性:递归自然契合树形结构,代码简洁易懂,适合处理嵌套子目录。
  3. 健壮性:正确处理输入中的各种格式(如空格、空子目录列表),确保解析准确。
  4. 时间复杂度:每个目录仅访问一次,总时间复杂度为O(M),满足题目限制。

通过这种方法,能清晰理解目录结构的遍历和递归计算过程,确保正确高效地解决问题。


python

题目分析

题目要求计算指定目录及其所有子目录的文件大小总和。每个目录信息以 目录id 文件大小 (子目录列表) 的格式给出,我们需要从输入中解析这些信息,并递归地累加目标目录及其所有子目录的文件大小。


解决思路

  1. 输入解析:读取目录数量 M 和目标目录 N,解析每个目录的信息。
  2. 数据结构:用字典存储目录的文件大小和子目录列表。
  3. 递归计算:从目标目录开始,递归遍历所有子目录,累加文件大小总和。

Python 代码实现

def main():import sys# 读取输入lines = [line.strip() for line in sys.stdin if line.strip()]# 解析 M 和 NM, N = map(int, lines[<

http://www.hkcw.cn/article/BirBTCmWOc.shtml

相关文章

全球名校疯抢哈佛留学生 各国争抢顶尖人才

最近,教育界掀起了一场激烈的全球“抢人大战”,各国纷纷瞄准哈佛生源。哈佛学生之所以受到追捧,是因为他们在学术研究上屡创佳绩,思维活跃,创新能力一流。这些人才对本国的教育、科研和经济发展有着不可估量的推动作用。美国政府宣布撤销部分中国留学生签证的消息一出,教…

怎样才能看懂赵丽颖新剧《在人间》 剧情烧脑反转不断

赵丽颖和尹昉主演的电视剧《在人间》虽然只有8集,却融合了无限流、悬疑烧脑、奇幻、多重人格、赛博朋克等众多元素,讲述了贾小朵与徐天一起进入“虚拟空间”的故事。故事题材新颖,惊喜不断。剧情以“梦中梦”方式展开,各种意想不到的场景和桥段层出不穷,如虚拟空间、抽象梦…

藏海传热度榜冠军 肖战新剧引爆收视狂潮

肖战主演的《藏海传》开播不到一周便引起了广泛关注。该剧不仅以超过2%的实时收视率成为央八年度冠军,肖战也凭借“藏海”一角在角色热度榜上遥遥领先。网友评价:“上一次这么火的还是《梦华录》,肖战这波赢麻了!”《藏海传》自首播以来,收视率一路飙升。酷云数据显示,该…

美国黄石公园车祸致中国公民5死8伤 皮卡车司机酒驾超限

5月1日晚,美国黄石国家公园附近发生了一起严重的交通事故。一辆皮卡车与一辆载有14人的面包车相撞,导致7人死亡,其中包括5名中国公民,另有8名中国公民受伤。5月30日,当地警方透露,皮卡车司机血液中的酒精含量超过法定准驾限值的两倍。肇事司机是来自得克萨斯州汉布尔的伊…

暴雨横扫南方大部 为何成都不下雨 成都成“少雨孤岛”

随着南海西南季风的爆发,南方多地进入强降雨模式。自5月下旬以来,从广西到湖南、江西、贵州,甚至云南东部和重庆东南部,雨水强度和频率都显著增加。特别是在云南、贵州一带,不仅有稳定的中到大雨,还有局地暴雨乃至大暴雨,累计雨量不断刷新。根据中央气象台发布的中期天气…

特朗普为何向俄罗斯下“最后通牒” 忍耐已达极限

特朗普要求俄罗斯在14天内给出解释,针对近期俄罗斯的行为,这位美国总统的耐心几乎耗尽。最近几天,特朗普在接受采访时对普京发出明确警告,称两周内将知道普京是否在利用美国,并表示如果确实如此,美国将做出不同的回应。这被视为特朗普对莫斯科的“最后通牒”,也是他自年…

陈伟霆曾舜晞陈瑶九门开机同框 原班人马回归期待

《九门》突然宣布开机,引起广泛关注。陈伟霆饰演张启山,曾舜晞扮演吴老狗,陈瑶则出演霍仙姑。尽管目前只公布了三位演员,但他们的角色都是重量级的,尤其是陈伟霆的回归让人充满期待。2016年,《老九门》播出时迅速走红。这部集结了众多当红演员的民国悬疑剧首播当天收视率…

Canvas实例篇:十二星座之天蝎座

Canvas实例篇&#xff1a;十二星座之天蝎座 前言效果预览代码实现代码说明星座特定星 结语 前言 星座总给人浪漫而神秘的感觉&#xff0c;如何用代码还原星空中的浪漫&#xff1f;本文将通过 Canvas 技术&#xff0c;讲述如何实现一个可交互的天蝎座星空图&#xff0c;包含星星…

马斯克回应离任当天眼角淤青:儿子所为 与子嬉戏致伤

美国总统特朗普和企业家马斯克于5月30日在白宫举行新闻发布会。这天也是马斯克在政府效率部任职的最后一天,他的眼角淤青引起了媒体的关注。马斯克解释说,这是他五岁的儿子小X造成的。当时他在和儿子玩耍时开玩笑让儿子打他的脸,结果儿子真的打了,虽然一开始没什么感觉,但…

陈幸同生日当天遭网暴 国乒饭圈乱象再起 竞技体育不应被饭圈侵蚀

2025年5月28日,国乒女队主力陈幸同在卡塔尔多哈的运动员公寓里庆祝生日。她在世乒赛上获得女单铜牌,本应享受职业生涯的高光时刻,但社交平台上的一些恶意评论让这个生日变得复杂。事情起因是她在半决赛中以0比4输给队友王曼昱,部分球迷认为她没有尽力,甚至怀疑她故意保存体…

朴槿惠带女保镖逛菜市场 现场围了几百人 支持保守派选情

距离6月3日的韩国总统选举还有6天时间,根据封关民调显示,共同民主党候选人李在明的支持率为49%,止住了下滑趋势并出现4%的增长。国民力量党候选人金文洙排名第二,但与李在明的差距拉大到14个百分点。面对这一情况,韩国保守派阵营竭力寻求实现单一化,让金文洙与民调排名第…

粤港澳车展惊现最小车评人 11岁小孩说车引围观

在粤港澳车展上,一位11岁的小车评人引起了关注。他在体验问界M8时特别提到了这款车的一些亮点,如冷暖箱、投影和准零重力座椅。这些配置不仅吸引孩子,也是父母看重的舒适功能。问界M8的家庭属性不仅体现在宽敞的空间上,更在于其细节设计。从娱乐到实用,从智能驾驶到安全保…

日本奈良小鹿当街抢中国游客包 意外引发网络热议

近期,一则奈良小鹿抢包的视频在社交媒体上引发热议。不少网友分享了自己的“受害经历”。5月28日下午,张女士在日本奈良公园喂食小鹿时,一只小鹿闻到了她包里的鹿饼味道,便靠近了她。张女士说,她的包里有一包鹿饼,另一只小鹿把包从椅子上拽到地上,结果包挂在了它的头上。…

央视聚焦山东日照海上龙舟新体验 传统与现代交织的魅力

仲夏至,端阳临。粽叶飘香,龙舟待发。5月31日,农历端午佳节,央视新闻举办了一场“龙腾端阳 ‘粽’情万家”活动,带领全国各地的观众穿越山河,体验多彩民俗,感受传统节日的独特魅力。中午1点35分,镜头转向日照奥林匹克水上运动公园潮汐海龙舟码头,日照文旅集团龙舟体育旅…

哀牢山也是能拍电影的啊 影视文旅深度融合

5月28日,云南省玉溪市新平县政府与浙江柏杨文化产业发展有限公司在戛洒举行了《哀牢山迷境》影视文旅项目合作启动会。双方以“影视IP赋能地方文旅”为核心,开启了“影视+文旅”深度融合的创新实践。此次合作采用“内容+场景”的创新模式,为文旅融合发展提供了可借鉴的样本。…

[LitCTF 2024]SAS - Serializing Authentication

打开题目在线环境&#xff1a; 题目给的源码提示我们反序列化&#xff0c;但是重点在输入框里面的那一句**user unserialize(base64_decode( d a t a ) ) ; ∗ ∗ 将一个 B a s e 64 编码的字符串 data));** 将一个Base64编码的字符串 data));∗∗将一个Base64编码的字符串da…

解构赋值(拆包赋值)技巧

在现代编程语言中&#xff0c;解构赋值&#xff08;Destructuring Assignment&#xff09;&#xff0c;又称拆包赋值&#xff08;unpacking assignment&#xff09;&#xff0c;正逐渐成为表达复杂数据结构的利器。Python语言作为脚本语言中的翘楚&#xff0c;提供了极其灵活且…

在win10/11下Node.js安装配置教程

下载安装 官网链接https://nodejs.org/zh-cn 下载好以后双击打开&#xff0c;点击下一步 勾选&#xff0c;然后下一步 选择路径、下一步 下一步 配置环境 找到我们安装的文件夹&#xff0c;创建两个文件夹 node_global node_cache 在CMD中配置路径 npm config set p…

【速通RAG实战:进阶】15、对话式智能推荐系统全攻略:精准推荐技术与企业级实践

一、智能推荐的核心逻辑与技术架构 &#xff08;一&#xff09;推荐系统的三维驱动模型 智能推荐系统的核心是构建「用户-对话-内容」的动态关联&#xff0c;通过三大维度实现精准匹配&#xff1a; 上下文感知&#xff1a;解析对话中的实体、意图和情感&#xff0c;例如用户…

两女子被新加坡醉汉辱骂:中国人别来 旅游遭遇惊魂一刻

前段时间,中国女子小谢和朋友前往新加坡旅游,在巴士上遭到醉汉骚扰。对方还试图抢她们的手机,最终两人被迫躲上另一辆巴士寻求庇护,并报警求助。近日,她们公开讲述了这段经历。小谢称,她和朋友5月20日抵达新加坡。隔日下午,她们从中央商场乘搭980号巴士回酒店休息,不料…