面试中问到的算法题。————目录树生成

前言

我在面试中遇到了算法题,也是我第一次面试,也不知道是太紧张了还是太久没刷算法题了,感觉压有点懵的状态,所以当时面试的时候没有做出来或者说只做了一半没有做完。
面试完成后,我又重新审视了一下题目,我觉得我一定能做出来,因为面试官说他出的题目不难,我能做出来。最终我做出来了,发现就是关于字典的操作。
题目:

解题思路

  • 首先乍一看,感觉挺乱的,没有什么头绪。
  • 但是仔细发现,数据库中的parent_id字段都换成了children,因此首先把这一步完成了。
  • 遍历数据库,去掉parent_id字段。注意:至于为什么不直接替换,因为字典是不可变的数据类型,所以需要删除后再添加。
  • 然后添加children并赋值空列表。
  • 最后倒序遍历,把后一个的字典放到前一个字典的children的空列表中。
  • 至此,题目完成。

Code

# -*- coding: utf-8 -*-
# @Time        : 2024/2/1 19:29
# @File        : TEST.py
# @Description : None
# ----------------------------------------------
# ☆ ☆ ☆ ☆ ☆ ☆ ☆ 
# >>> Author    : Kinght_123
# >>> Mail      : 1304662247@qq.com
# >>> Blog      : tim1304662247.blog.csdn.net
# ☆ ☆ ☆ ☆ ☆ ☆ ☆ls = [{"id": 1, "parent_id": 0, "name": "a"},{"id": 3, "parent_id": 1, "name": "c"}]def func(ls):for i in range(len(ls)):new_dic = ls[i]del new_dic["parent_id"]for i in range(len(ls)):ls[i]["children"] = []for i in range(len(ls)-1, 0, -1):ls[i - 1]['children'] = ls[i]return ls[0]print(func(ls))

运行结果

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

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

相关文章

新版MQL语言程序设计:装饰器模式的原理、应用及代码实现

文章目录 一、什么是装饰器模式二、为什么需要装饰器模式及应用场景三、装饰器模式的代码实现 一、什么是装饰器模式 装饰器模式是一种结构型设计模式,它允许你通过将对象包装在一个装饰器类的对象中来动态地扩展其功能。装饰器模式提供了一种比继承更加灵活的方式来…

【Linux】日志的实现——日志等级的分类、日志的实现和输出、日志在程序中的应用(以管道通信为例)

文章目录 日志实现1.日志的介绍2.日志的制作(向屏幕直接打印)2.1获取时间2.2输出内容2.3打印方式2.3.1向单个文件打印2.3.2向分类文件打印 3.日志的应用3.1以管道通信为例 日志实现 1.日志的介绍 Linux日志是以时间线-事件的方式记录操作系统和应用的信…

【软件工程】建模工具之开发各阶段绘图——UML2.0常用图实践技巧(功能用例图、静态类图、动态序列图状态图活动图)

更多示例图片可以参考:(除了常见的流程图,其他都有) 概念:类图 静态:用例图 动态:顺序图&状态图&活动图 1、【面向对象】UML类图、用例图、顺序图、活动图、状态图、通信图、构件图、部…

Redis核心技术与实战【学习笔记】 - 12.Redis删除数据后,为什么内存占用率还是很高?

前言 在使用 Redis 是,经常会遇到一个问题:明明做了数据删除,数据量不大,但是 使用 top 命令查看时,发现 Redis 还是占用了很多内存。 这是因为,当删除数据后,Redis 释放的内存空间会由内存分…

项目工程在Debug下编译仍然无法进入断点调试

无法进入断点可能原因 1.cmakelist 1.cmakelist 链接库时,添加-s,用于生成striped文件,导致把调试信息删除(去除“no debugging symbols found”提示,不能有-s选项,-s作用具体参考链接)

《数字化运维路线图》第三部分-数字化运维转型平台 震撼发布!

数字化转型已不再是企业追求效益最大化的手段,而是成为经济发展变革、提升国家数字竞争的核心动力。在此背景下,博睿数据继续发力,隆重推出「数字化运维转型平台」,汇聚了我们对数字化转型的深刻洞见与实践经验,以期为…

༺༽༾ཊ—Unity之-01-工厂方法模式—ཏ༿༼༻

首先创建一个项目, 在这个初始界面我们需要做一些准备工作, 建基础通用文件夹, 创建一个Plane 重置后 缩放100倍 加一个颜色, 任务:使用工厂方法模式 创建 飞船模型, 首先资源商店下载飞船模型&#xff0c…

《区块链简易速速上手小册》第6章:区块链在金融服务领域的应用(2024 最新版)

文章目录 6.1 金融服务中的区块链6.1.1 金融服务中区块链的基础6.1.2 主要案例:跨境支付6.1.3 拓展案例 1:去中心化金融(DeFi)6.1.4 拓展案例 2:代币化资产 6.2 区块链在支付系统中的作用6.2.1 支付系统中区块链的基础…

Kong 速率限制

速率限制用于控制发送到上游服务的请求速率。它可以用于防止拒绝服务(DoS)攻击、限制网络爬虫以及其他形式的滥用行为。没有速率限制,客户端可以无限制地访问您的上游服务,可能会对可用性产生负面影响。 速率限制插件 Kong Gate…

Linux - iptables 防火墙

一. 安全技术和防火墙 1.安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全…

专业数据治理:数据中台系统塑造企业未来的数字化运营管理新秩序

随着信息化进程的快速推进,数据已然成为企业最为宝贵的资产。对于众多企业而言,如何有效整合、治理以及充分利用这些数据,使之成为推动业务发展的引擎,成为当前难题。数据中台应运而生,它被认为是企业数字化转型的至关…

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现 本质:让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性(…

远EC600E-CN LTE Standard模块硬件设计手册

EC600E-CN是一款LTE-FDD、LTE-TDD无线通信模块,支持LTE-FDD和LTE-TDD数据连接,可为客户在特定场景应用中提供语音功能。 模块封装紧凑,仅为22.9mm21.9mm2.4mm,能满足大部分M2M应用需求,例如自动化领域、智能计量、跟踪…

IP网络对讲系统高清可视寻呼话筒管理中心主机10寸大屏有线呼叫器监狱看守所监狱收费站可视对讲系统

SV-2017P网络可视话筒产品简介 产品特点 专业寻呼主机外形,桌面式设计,采用10.1寸高清IPS屏幕,分辨率1280*720,全虚拟按键加实体按键,外形美观大方;采用工业级4核嵌入式CPU芯片1G内存,保证系统…

计算机网络(第六版)复习提纲24

3 传输控制协议TCP概述 A TCP最主要的特点 1 面向连接的传输层协议 2 每一条TCP连接只能有两个端点,且只能是点对点的 3 提供可靠交付的服务(无差错、不丢失、不重复、不乱序) 4 全双工通信,两端设有发送缓存和接收缓存 5 面向字节…

arcgis自定义dem高程实现地形抬高 - 操作矢量,转tin、adf(tif),cesiumlab切高程服务

这次记录分享一下arcgis自定义高程全过程 /(ㄒoㄒ)/~~ 我的场景:前端实现地面抬高效果 自定义高程实现地形抬高 一、数据处理 - arcgis操作矢量1、准备工作(可选)2、绘制外围矢量(可选)3、操作矢量数据 二、创建tin - …

HTTP请求传递参数方式【2024-02-01】

1、HTTP请求传递参数分类 1.1、按照请求方式分类 GET方法:通过查询字符串(Query String,每个参数由参数名和参数值组成,使用等号 连接,不同参数之间使用 & 符号分隔)的方式或直接将参数放在URL中来传递参数POST…

VUE PC端可拖动悬浮按钮

一、实现效果&#xff1a; 二、FloatButton.vue <template><div><div class"sssss"><div class"callback float" mousedown"down" touchstart"down" mousemove"move" touchmove"move" mous…

C语言——柔性数组

柔性数组概念&#xff1a; 这个概念你可能没听说过&#xff0c;但是这个概念确实存在&#xff0c;在C99中&#xff0c;结构体中最后一个成员允许是未知大小的数组&#xff0c;这就叫做【柔性数组】成员。 struct S {char c;int i;int arr[0];//未知大小的数组 - 柔性数组成员 }…