TikTok OA Interview Question: Evaluate Division

18 Views
No Comments

Title

Evaluate Division

Question description

You are given an array of variable pairs equations and an array of real numbers values, where equations[i] = [Ai, Bi] and values[i] represent the equation Ai / Bi = values[i]. Each Ai or Bi is a string that represents a single variable.

You are also given some queries, where queries[j] = [Cj, Dj] represents the jth query where you must find the answer for Cj / Dj.

Return the answers to all queries. If a single answer cannot be determined, return -1.0.

Note: The input is always valid. You may assume that evaluating the queries will not result in division by zero and that there is no contradiction.

Note: The variables that do not occur in the list of equations are undefined, so the answer cannot be determined for them.

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

Output: [6.00000,0.50000,-1.00000,1.00000,-1.00000]

Explanation:

Given: a / b = 2.0, b / c = 3.0
queries are: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?

This problem is a weighted graph query task. Treat each variable as a node, and each equation Ai / Bi = value as a directed edge with weight value, plus the reverse edge with weight 1/value. For each query Cj / Dj, find a path between the two variables and multiply the edge weights along the path to get the ratio; if no path exists or a variable is undefined, return -1.0. The standard solutions are DFS/BFS over the graph or a union-find structure with ratios.

END
 0