0
点赞
收藏
分享

微信扫一扫

399. Evaluate Division刷题笔记

残北 2022-04-30 阅读 32

参考了这篇回答

class Solution:
    def calcEquation(self, equations: List[List[str]], values: List[float], queries: List[List[str]]) -> List[float]:
        graph = {}
        for i in range(len(equations)):
            if equations[i][0] in graph:
                graph[equations[i][0]].append((equations[i][1],values[i]))
            else:
                graph[equations[i][0]]=[(equations[i][1],values[i])]
            if equations[i][1] in graph:
                graph[equations[i][1]].append((equations[i][0],1/values[i]))
            else:
                graph[equations[i][1]]=[(equations[i][0],1/values[i])]
        
        def find_path(query):
            b, e = query
            
            if b not in graph or e not in graph:
                return -1.0
                
            q = collections.deque([(b, 1.0)])
            visited = set()
            
            while q:
                front, cur_product = q.popleft()
                if front == e:
                    return cur_product
                visited.add(front)
                for neighbor, value in graph[front]:
                    if neighbor not in visited:
                        q.append((neighbor, cur_product*value))
            
            return -1.0
        
        return [find_path(q) for q in queries]

结果:
在这里插入图片描述

举报

相关推荐

LeetCode刷题笔记

【leetcode刷题笔记】

python刷题笔记

刷题笔记篇

Leetcode刷题笔记

【Leetcode】刷题笔记

刷题笔记2

刷题笔记ing

算法刷题笔记

0 条评论