- 博客(0)
- 收藏
- 关注
“小米Git”面试真题,Python实现
Git 是一个常用的分布式代码管理工具,Git 通过树的形式记录文件的更改历史,树上的每个节点表示一个版本分支,工程师经常需要找到两个分支的最近的分割点。给定一个用邻接矩阵 matrix 表示的树,请你找到版本 versionA 和 versionB 最近的分割点并返回编号。
该代码实现了两个功能:dfs 和 LCA。
dfs 函数通过遍历树,记录每个节点的父节点和深度。
LCA 函数找到两个节点的最近公共祖先,它采用倍增法计算最近公共祖先。
输入:
matrix:邻接矩阵,表示树。
versionA:第一个版本的编号。
versionB:第二个版本的编号。
输出:
版本 versionA 和 versionB 最近的分割点的编号。
2023-02-12
编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址
IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。
IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且,我们可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写。所以,2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址。
然而,我们不能因为某个组的值为 0,而使用一个空的组,以至于出现 (::) 的情况。 比如, 2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。
同时,在 IPv6 地址中,多余的 0 也是不被允许的。比如,02001:0db8:85a3:0000:0000:8a2e:0370::7334 是无效的 IPv6 地址。
2023-02-12
Python实现给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点
Python实现给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
数据范围:0≤n≤1000,树上每个节点的val值满足 0≤val≤100。
要求:空间复杂度 O(n),时间复杂度 O(n)。
例如:
输入:{1,2,3}
返回值:
[[1,2,3],
[2,1,3],
[2,3,1]]
2023-02-12
设计LRU缓存结构Python实现
设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为 capacity ,操作次数是 n ,并有如下功能:
1. Solution(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存
2. get(key):如果关键字 key 存在于缓存中,则返回key对应的value值,否则返回 -1 。
3. set(key, value):将记录(key, value)插入该结构,如果关键字 key 已经存在,则变更其数据值 value,如果不存在,则向缓存中插入该组 key-value ,如果key-value的数量超过capacity,弹出最久未使用的key-value。
2023-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人