题目描述
给出方程式 A / B = k, 其中 A 和 B 均为代表字符串的变量, k 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 -1.0。
输入总是有效的。你可以假设除法运算中不会出现除数为0的情况,且不存在任何矛盾的结果。
tag
DFS BFS 图 并查集
样例
1 | 示例 : |
算法1
(DFS) O()
思路
先构造图,使用dict实现,其天然的hash可以在in判断时做到O(1)复杂度。
对每个equation如”a/b=v”构造a到b的带权v的有向边和b到a的带权1/v的有向边,
之后对每个query,只需要进行dfs并将路径上的边权重叠乘就是结果了,如果路径不可达则结果为-1。
复杂度分析:
python 代码
1 | class : |
算法2
(BFS) O()
思路
复杂度分析:
python 代码
1 |
算法3
(并查集) O()
思路
https://leetcode.com/problems/evaluate-division/discuss/162493/Python-Union-Find-Solution
复杂度分析:
python 代码
1 |