63-不同路径
63、不同路径
https://leetcode-cn.com/problems/unique-paths-ii/
题目:
题解:
一道动态规划题,要想知道走到终点(i,j)的路径Z(i,j)有多少条,我们只需要知道Z(i-1,j)和Z(i,j-1)的到达路径数,相加即可。
因为此题的特点,我们可以获得一波初始值,并且从起点开始递推计算到重点。因为机器人只能向右或者向下走,所以第0行,和第0列的路径数一定是固定的。比如说第0行,要想到达第0行的任一元素,就必须从该元素的左边走过去;第0列也同样,必须从该元素的上面下来。因此,我们便获得了第0行和第0列所有位置的路径数,然后循环遍历整个二位数组,判断当前坐标是否有障碍物,如果有则到达该路径数Z(X,X)为0,如果没有则Z(X,X)=Z(i-1,j)+Z(i,j-1),这样便得到了最终的路径数。
坑点:此题在开始时初始化第0行和第0列元素时,一定要注意,比如从左向右遍历第0行时,如果一旦发现障碍物,那右边的元素一定都为0,因为必须从左经过,但左边已经被堵住了;第0列的初始化同理,这里我报错了好多次,因为脑子笨只能自己画图来找问题。没办法,终归是菜。
1 | class Solution: |