题解 | 小米Git

小米Git

https://www.nowcoder.com/practice/4fcd94851d9142458329fd1d3e5802a8

class Solution:
    def Git(self , matrix: List[str], versionA: int, versionB: int) -> int:
        n = len(matrix)
        g = [[] for _ in range(n)]
        for i,c in enumerate(matrix):
            for j,x in enumerate(c):
                if x=='1':
                    g[i].append(j)
        print(g)
        parent = {}
        def dfs(node,par):
            for ner in g[node]:
                if ner!=par:
                    parent[ner] = node
                    dfs(ner, node)
        dfs(0,-1)
        parent[0] = -1
        print(parent)
        pathA = set()
        while versionA!=-1:
            pathA.add(versionA)
            versionA = parent[versionA]
        while versionB not in pathA:
            versionB = parent[versionB]
        return versionB


可以使用深度优先搜索(DFS)来记录每个节点到根节点的路径,然后找到这两个路径的最近公共祖先。

全部评论

相关推荐

2025-12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务