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

news2025/7/26 8:51:40

在这里插入图片描述

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 N
        int 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)"

            // 处理子目录字符串,提取子目录id
            childrenStr = 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 和 N
    M, N = map(int, lines[<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2399025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消费者行为变革下开源AI智能名片与链动2+1模式S2B2C商城小程序的协同创新路径

摘要&#xff1a;在信息爆炸与消费理性化趋势下&#xff0c;消费者从被动接受转向主动筛选&#xff0c;企业营销模式面临重构挑战。本文提出开源AI智能名片与链动21模式S2B2C商城小程序的协同创新框架&#xff0c;通过AI驱动的精准触达、链动裂变机制与S2B2C生态赋能&#xff0…

软考 系统架构设计师系列知识点之杂项集萃(78)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;77&#xff09; 第139题 以下关于软件测试工具的叙述&#xff0c;错误的是&#xff08;&#xff09;。 A. 静态测试工具可用于对软件需求、结构设计、详细设计和代码进行评审、走查和审查 B. 静…

如何解决MySQL Workbench中的错误Error Code: 1175

错误描述&#xff1a; 在MySQL Workbench8.0中练习SQL语句时&#xff0c;执行一条update语句&#xff0c;总是提示如下错误&#xff1a; Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnTo disab…

Docker 镜像(或 Docker 容器)中查找文件命令

在 Docker 镜像&#xff08;或 Docker 容器&#xff09;中运行如下两个命令时&#xff1a; cd / find . -name generate.py它们的含义如下&#xff0c;我们来一行一行详细拆解&#xff0c;并结合例子讲解&#xff1a; ✅ 第一行&#xff1a;cd / ✅ 含义 cd 是“change dire…

MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)

MySQL进阶篇 存储引擎篇MySQL体系结构存储引擎简介常用存储引擎简介存储引擎的选择 索引篇索引简介索引结构(1)BTree索引(2)hash索引 索引分类索引语法SQL性能分析指标(1)SQL执行频率(2)慢查询日志(3)profile详情(4)explain或desc执行计划 索引使用引起索引的失效行为SQL提示覆…

BugKu Web渗透之game1

启动场景&#xff0c;打开网页如下&#xff1a; 是一个游戏。 步骤一&#xff1a; 右键查看源代码也没有发现异常。 步骤二&#xff1a; 点击开始游戏来看看。 结果他是这种搭高楼的游戏。我玩了一下子&#xff0c;玩到350分就game over。 之后就显示游戏结束&#xff0c;如…

Axure设计案例——科技感渐变柱状图

想让你的数据展示瞬间脱颖而出&#xff0c;成为众人瞩目的焦点吗&#xff1f;快来看看这个 Axure 设计的科技感渐变柱状图案例&#xff01;科技感设计风格以炫酷的渐变色彩打破传统柱状图的单调&#xff0c;营造出一种令人惊叹的视觉盛宴。每一个柱状体都仿佛蕴含着无限能量&am…

互联网大厂智能体平台体验笔记字节扣子罗盘、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台

互联网大厂 字节扣子、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台 体验 开始动手 了解 智能体&#xff0c;发现已经落后时代太远 光头部互联网大厂对开 公开的平台就已经这么多&#xff0c;可以学习和了解&#xff0c;相关的信息 整理了对应的平台地址…

深入解析ReactJS中JSX的底层工作原理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…

NodeMediaEdge任务管理

NodeMediaEdge任务管理 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 在未使用NodeMediaServer的情况下&#xff0c;或是对部分视频流需要单独推送的需求&#xff0c;也可…

SpringBoot集成第三方jar的完整指南

原文地址&#xff1a;https://blog.csdn.net/weixin_43826336/article/details/141640152?ops_request_misc%257B%2522request%255Fid%2522%253A%25227d4118ef2d572ba4428caf83f1d2bb28%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id7d4118…

前端基础之《Vue(18)—路由知识点》

一、两种路由模式 1、hash路由 &#xff08;1&#xff09;url中有#号&#xff0c;背后是监听onhashchange事件 &#xff08;2&#xff09;hash路由部署上线不会出现404问题&#xff0c;背后是基于history api实现的 2、history路由 &#xff08;1&#xff09;url中没有#号 &a…

014校园管理系统技术解析:构建智慧校园管理平台

校园管理系统技术解析&#xff1a;构建智慧校园管理平台 在教育信息化快速发展的当下&#xff0c;校园管理系统成为提升学校管理效率、优化校园服务的重要工具。该系统集成院校管理、投票管理等多个核心模块&#xff0c;面向管理员、用户和院内管理员三种角色&#xff0c;通过…

SQLite详细解读

一、SQLite 是什么&#xff1f; SQLite 是一个嵌入式关系型数据库管理系统&#xff08;RDBMS&#xff09;。它不是像 MySQL 或 PostgreSQL 那样的客户端-服务器数据库引擎&#xff0c;而是一个自包含的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 核心特点 嵌入式/库…

LRC and VIP

//首先排除所有数相等的情况,再把最大值放在一个组&#xff0c;那么最大值的gcd就等于其本身&#xff0c;再判断剩下的gcd是否等于最大值就可以了 #include<bits/stdc.h> using namespace std;const int N1e3100; int a[N]; map<int,int>mapp; int main(){int t;ci…

Python趣学篇:Pygame重现经典打砖块游戏

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《Python星球日记》 目录 一、游戏背景与技术选型1. 打砖块游戏…

【Netty系列】Reactor 模式 2

目录 流程图说明 关键流程 以下是 Reactor 模式流程图&#xff0c;结合 Netty 的主从多线程模型&#xff0c;帮助你直观理解事件驱动和线程分工&#xff1a; 流程图说明 Clients&#xff08;客户端&#xff09; 多个客户端&#xff08;Client 1~N&#xff09;向服务端发起连…

TomatoSCI分析日记:数据分析为什么用csv不用excel

其实并不是多余&#xff0c;虽然看到的内容是一样的&#xff0c;但是相比excel文件&#xff0c;csv文件没这么多繁文缛节&#xff0c;效率更高。 1.csv更干净 csv本质是纯文本&#xff0c;只有你看到的数据&#xff0c;没有花里胡哨的单元格格式、颜色、批注等隐藏信息&#…

HTTP协议完全指南:从请求响应到HTTPS安全机制

文章目录 一、HTTP协议中的基本概念1.HTTP协议介绍&#xff08;1&#xff09;协议&#xff08;2&#xff09;传输&#xff08;3&#xff09;超文本 2.统一资源定位符&#xff08;URL&#xff09; 二、HTTP协议中的请求和响应1.HTTP客户端请求消息&#xff08;1&#xff09;请求…

设计模式——状态设计模式(行为型)

摘要 状态设计模式是一种行为型设计模式&#xff0c;核心在于允许对象在内部状态改变时改变行为。它通过状态对象封装不同行为&#xff0c;使状态切换灵活清晰。该模式包含环境类、抽象状态类和具体状态类等角色&#xff0c;具有避免大量分支判断、符合单一职责和开闭原则等特…