链接: https://leetcode-cn.com/problems/evaluate-division/
题面
给定一串等式除法的式子和计算结果,要求你根据这些式子计算出另一些除法的计算结果,如果无法计算则输出-1
解法
带权并查集。
核心思想是维护子节点与父节点上的权重,作为父节点与子节点的比值
然后每次在查找的时候都会进行路径压缩,更新父节点的同时也会更新权重值
union的时候同样需要根据等式来进行权重的更新
还是常规的并查集的操作,合并两棵树和查找父节点
只是在查找和合并的时候需要进行权重的更新
还需要保留原父节点以便进行更新
实现起来细节比较多,可以结合代码理解
代码
1 | class Solution { |