leetcode刷題之399 除法求值

2021-09-26 08:45:50 字數 1392 閱讀 3821

題目描述:

給出方程式 a / b = k, 其中 a 和 b 均為代表字串的變數, k 是乙個浮點型數字。根據已知方程式求解問題,並返回計算結果。如果結果不存在,則返回 -1.0。

示例 :

給定 a / b = 2.0, b / c = 3.0

問題: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?

返回 [6.0, 0.5, -1.0, 1.0, -1.0 ]

輸入為: vector> equations, vector& values, vector> queries(方程式,方程式結果,問題方程式), 其中 equations.size() == values.size(),即方程式的長度與方程式結果長度相等(程式與結果一一對應),並且結果值均為正數。以上為方程式的描述。 返回vector型別。

基於上述例子,輸入如下:

equations(方程式) = [ ["a", "b"], ["b", "c"] ],

values(方程式結果) = [2.0, 3.0],

queries(問題方程式) = [ ["a", "c"], ["b", "a"], ["a", "e"], ["a", "a"], ["x", "x"] ].

輸入總是有效的。你可以假設除法運算中不會出現除數為0的情況,且不存在任何矛盾的結果。

思路:兩個雜湊表,分別按順序儲存每個被除數對應的除數和值。用dfs,找出結果中除數與被除數對應的路徑,權值相乘。

public double calcequation(list> equations, double values, list> queries) 

if(!pairs.containskey(tmp1))

pairs.get(tmp0).add(tmp1);

pairs.get(tmp1).add(tmp0);

valuedpairs.get(tmp0).add(values[i]);

valuedpairs.get(tmp1).add(1.0/values[i]);

}double res = new double[queries.size()]; //結果

for(int i = 0 ; i(), 1.0);//dfs遞迴找到結果

res[i] =( res[i]==0.0) ? -1.0 : res[i];

}return res;

}public double dfs(string tmp0, string tmp1, map> pairs, map> valuedpairs, setvisited, double res)

}visited.remove(tmp0);//除去經過的點

return tmp;

}

LeetCode刷題之238 除自身以外陣列的乘積

我不知道將去向何方,但我已在路上!輸入 1,2,3,4 輸出 24,12,8,6 class solution def productexceptself self,nums list int list int left val,right val 1 len nums 1 len nums res...

Leetcode刷題之括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...

leetcode刷題之堆

今天終於開啟的第二個專題的刷題之旅堆,不過第乙個專題棧還有乙個小問題沒解決就是利用遞減棧去解決接雨水的問題,雖然那道題我用動態規劃的問題解決出來了,我記得看到過一道面試題,問棧和堆有什麼區別。通過搜尋網上的資料總結如下。棧 stack 由系統分配記憶體,速度較快,但是自己無法掌握。堆 一般用兩種方法...