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

前言

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

解题思路

  • 首先乍一看,感觉挺乱的,没有什么头绪。
  • 但是仔细发现,数据库中的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      : [email protected]
# >>> 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))

运行结果

你可能感兴趣的:(#,面试小知识,面试,算法,职场和发展)