Python 实现计算从 n 号文件夹追溯到根目录的层数,附代码详解与复杂度分析
以下是使用 Python 实现的代码: ```python # 读取文件夹总数 n = int(input()) # 初始化一个列表来存储每个文件夹的父目录 parent = [0] * (n + 1) # 读取每个文件夹的父目录信息 for i in range(2, n + 1): parent[i] = int(input()) # 初始化层数为 0 layers = 0 # 从 n 号文件夹开始 current_folder = n # 不断向上访问父目录,直到到达根目录(1 号文件夹) while current_folder != 1: # 访问父目录 current_folder = parent[current_folder] # 层数加 1 layers += 1 # 输出结果 print(layers) ``` 代码解释: 1. 读取文件夹总数:使用 `input()` 函数读取用户输入的文件夹总数 `n`,并将其转换为整数类型。 2. 初始化父目录列表:创建一个长度为 `n + 1` 的列表 `parent`,用于存储每个文件夹的父目录编号。索引 `i` 表示文件夹的编号,`parent[i]` 表示该文件夹的父目录编号。 3. 读取父目录信息:使用 `for` 循环从 2 到 `n` 读取每个文件夹的父目录编号,并将其存储在 `parent` 列表中。 4. 初始化层数:将层数 `layers` 初始化为 0。 5. 从 `n` 号文件夹开始追溯:将当前文件夹 `current_folder` 初始化为 `n`,并使用 `while` 循环不断向上访问父目录,直到到达根目录(1 号文件夹)。 6. 访问父目录并增加层数:在每次循环中,将当前文件夹更新为其父目录,并将层数加 1。 7. 输出结果:当到达根目录时,循环结束,输出层数 `layers`。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是文件夹的总数。在最坏情况下,需要访问每个文件夹一次。 - 空间复杂度:$O(n)$,主要用于存储每个文件夹的父目录编号。 ######[AI问答 | 506点数解答 | 2025-11-15 20:41:03]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)467
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- PHP 开发必知:操作目录的 10 个常用函数全解析(百度文心 | 420点数解答 | 2023-11-09 17:58:57)274
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)231
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)63
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)420
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)414
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)468
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)359
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)334
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)262