当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

练题计划 · 力扣 HOT 100

除法求值

中等calcEquation()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O((N+Q) * V),空间 O(V)

除法求值

给你一个变量对数组 equations 和一个实数数组 values 作为已知条件,其中 equations[i] = [a_i, b_i] 和 values[i] 共同表示 a_i / b_i = values[i]。

再给你一些查询 queries,其中 queries[j] = [c_j, d_j],请根据已知条件求出 c_j / d_j 的结果。若无法确定则返回 -1.0。

约定

  • 1 <= equations.length <= 20
  • values.length == equations.length
  • 0.5 <= values[i] <= 20
  • 1 <= queries.length <= 20
  • equations[i].length == queries[j].length == 2
  • 变量名是长度为 1 到 5 的非空字符串。

输入

  • equations:除法等式左右变量
  • values:对应等式的商
  • queries:待求商的变量对

输出

每个查询的结果;若变量未出现或无法建立关系,返回 -1.0。

示例一

输入:

equations = [["a","b"],["b","c"]], values = [2.0, 3.0]
queries = [["a","c"],["b","a"],["a","e"],["a","a"],["x","x"]]

输出:

[6.0, 0.5, -1.0, 1.0, -1.0]

解释:a/b=2.0,b/c=3.0,故 a/c=6.0;b/a=0.5;e 未知;a/a=1.0;x 未知。

复杂度要求

  • 时间复杂度:建图 O(N),每个查询 DFS O(V)
  • 空间复杂度:O(V)
Loading...

输入

[[["a","b"],["b","c"]],[2,3],[["a","c"],["b","a"],["a","e"],["a","a"],["x","x"]]]

预期输出

[6,0.5,-1,1,-1]
自定义用例