637. Average of Levels in Binary Tree
這道題比較簡單母截,只需要對 tree 進行 level traversal 的同時,計算每層的 average value橄教。
640. Solve the Equation
式子中沒有括號清寇,只有加減,而且最多只有一次項护蝶。把式子以 '=' 分為兩部分华烟,分別計算左式和右式的 x 的系數(shù)和常數(shù)項,然后只需要比較左右式的 x 的系數(shù)和常數(shù)項持灰,即可得到解盔夜。需要注意式子中出現(xiàn)負號的情況。
此次完成了前兩道題
638. Shopping Offers
可以使用 recursion 和 dynamic programming 的方式對這道題進行求解。
recursion:
1)依次選用一個 special(最多100次)喂链,然后 recursive call返十,最多6層
recursive call。
2)可以先算出不使用 special 的價格椭微,然后依次嘗試各種 special洞坑,如果能使價格降低就 recursive call,這樣做可以做實現(xiàn)剪枝蝇率。
(還可以使用hashmap<needs, total>迟杂,把之前各種情況的needs作為key,花費作為value記錄下來本慕,避免重復(fù)計算排拷。)
dynamic programming:
需要將高維 dp 轉(zhuǎn)換為一維的,方便計算锅尘,而且主要是因為這里 item 的種類個數(shù)不確定攻泼,所以維度不確定〖螅可以寫 encode 和 decode 函數(shù)處理維度轉(zhuǎn)換忙菠。接下來,只需要對有值的單元纺弊,進行各種嘗試牛欢,求得之后單元對應(yīng)的值(花費)。
639. Decode Ways II
使用 dynamic programming 的思想淆游,分為兩種情況:只以當前字符作為一個字母傍睹;以當前和前一個,這兩個字符作為一個字母犹菱。只不過這道題在每種情況中拾稳,細分情況的時候需要考慮'*'。
優(yōu)化:可以只使用兩個變量來保存前一個腊脱,和前前一個的情況個數(shù)访得,用于當前的計算。時間復(fù)雜度從 O(n) 優(yōu)化到 O(1)陕凹。
注意:這兩個變量最好是 long 悍抑,防止溢出。