Leetcode中Path的题目总结

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问题。

相关文章
相关标签/搜索