Matrix中的path問題:
62.Unique Paths
63.Unique Paths II
這兩題是典型的dp問題,要求一共有多少種方案。分析狀態f(i, j)是走到(i, j)總共的路徑。它能夠由前面兩個狀態獲得,即f(i, j)=f(i - 1, j) + f(i, j - 1)。最後注意邊界值便可。變形是有設obstacle, 那麼遇到obstacle的時候,把當前可行路徑設爲0便可。優化
64.Minimum Path Sum
這一題在上一題的基礎上變形,以前要求path個數,如今要求minimum sum。一樣分析狀態f(i, j)是走到(i, j)時的最小sum。它能夠由前面兩個狀態獲得,即f(i, j)=min(f(i - 1, j), f(i, j - 1)) + value(i, j)。仍是注意邊界值就能夠了。基礎
174.Dungeon Game
這一題有點思惟上有些跳躍,但萬變不離其宗。我要保證它不死,就要保證最後走完至少還剩下一滴血。因此從後往前計算會比較方便。當遇到須要血量小於1的時候,咱們仍是按1來算,由於是反過來算,因此無論當前這一次能夠給咱們加多少血量,以前那一步的算完的時候,到少來行有1。im
329.Longest Increasing Path in a Matrix
這是一個DFS的問題,我要求最長增加路徑,那我就得每一個點都試一下。優化是當我走到一個點時,我若是已經計算過這個點,那麼我就把計算好的值存起來。若是有一個點在計算最長增加路徑時通過這個點,就能夠直接用存好的值,而不是再計算一遍。思維
361.Bomb Enemy
這個問題最重要是關注新起一行或者一列和當w出現的時候,從開始到w出現以前,每一個同一行,同一列的數遇到的enermy都是相同的,可是當w出現隔斷以後,咱們就必須從新計算從w開始,到下一個w之間有多少enermy了。path
Binary Tree中的path問題
112.Path Sum
113.Path Sum II
這兩個一個就boolean, 一個要求輸出全部結果。相同點是都到從上向下掃出結果,不一樣點是boolean掃到一個正解就能夠返回true,能夠用dfs,而另外一個要把全部的都掃一遍,存到結果中輸出,典型的dfs + backtracking問題。
124.Binary Tree Maximum Path Sum
這不是用dfs作,分兩種可能,一種多是一個single path中出現了最大和,另外一種多是左右子樹和母節點共同構成最大和。就這兩種狀況分別計算。
257.Binary Tree Paths這就是個dfs問題。