leetcode-399-除法求值

 

 方法一:dfs+图

class Solution:
    def calcEquation(self, equations: List[List[str]], values: List[float], queries: List[List[str]]) -> List[float]:
        graph = {}
        for (x,y),v in zip(equations,values):
            if x not in graph:
                graph[x] = {y:v}
            else:
                graph[x][y] = v
            if y not in graph:
                graph[y] = {x:1/v}
            else:
                graph[y][x] = 1/v
        
        def dfs(x,y):
            if x not in graph:
                return -1
            if x == y:
                return 1
            for node in graph[x].keys():
                if node == y:
                    return graph[x][node]
                elif node not in visited:
                    visited.add(node)
                    v = dfs(node,y)
                    if v!= -1:
                        return graph[x][node]*v
            return -1
        res = []
        for x,y in queries:
            visited = set()
            res.append(dfs(x,y))
        return res

 

posted @ 2019-10-11 20:31  oldby  阅读(230)  评论(0编辑  收藏  举报