399. 除法求值

这次看了并查集,但是我并没有实现,第一次接触并不想写

然后copy了一个同学深度遍历的代码,很好理解,将创建一个二维的字典(就暂且这么叫吧),然后

将各个字符串之间的关系储存在其中,最后深度遍历一遍利用x/y=i   , y/z = j, 则x/z = i*j

还有数据结构创建方式  defaultdict(dict)创建的图

还有循环内创建set( ),在循环体的函数内是一个局部的“全局变量”,循环体内调用的函数竟然不会重新刷新重建

注意这个visited

399. 除法求值

 

 

399. 除法求值

 

399. 除法求值

查看代码
class Solution:
    def calcEquation(self, equations: List[List[str]], values: List[float], queries: List[List[str]]) -> List[float]:
        graph=defaultdict(dict)
        for (a,b),v in zip(equations,values):
            graph[a][b]=v
            graph[b][a]=1/v
        def dfs(s,e):
            if s not in graph or e not in graph:
                return -1
            if s==e:
                return 1
            visited.add(s)
            for i in graph[s]:
                if i==e:
                    return graph[s][i]
                if i not in visited:
                    ans=dfs(i,e)
                    if ans!=-1:
                        return graph[s][i]*ans
            return -1
        res=[]
        for a,b in queries:
            visited=set()
            res.append(dfs(a,b))
        return res

 

上一篇:基于Springboot实现宠物医院综合管理系统


下一篇:java学习第四十五天内容