描述
给定一个m*n的地图,其中加入了一些障碍。每次只能向下或者向右走,问从左上角走到右下角有多少不同的路径?
分别用0和1代表空区域和障碍
例如
下图表示有一个障碍在3*3的图中央。
[ [0,0,0], [0,1,0], [0,0,0] ]
有2条不同的路径
备注:m和n不超过100.
示例1
输入:
[[0,1]]
返回值:
0
示例2
输入:
[[1],[1]]
返回值:
0
public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if(obstacleGrid.length==0) return 0; if(obstacleGrid[0][0]==1) return 0; obstacleGrid[0][0] = 1; for(int j = 1;j<obstacleGrid[0].length;j++){ obstacleGrid[0][j] = obstacleGrid[0][j]==1?0:obstacleGrid[0][j-1]; } for(int i = 1;i<obstacleGrid.length;i++){ for(int j = 0;j<obstacleGrid[i].length;j++){ if(obstacleGrid[i][j]==1) obstacleGrid[i][j] = 0; else obstacleGrid[i][j] = (j-1>=0?obstacleGrid[i][j-1]:0)+obstacleGrid[i-1][j]; } } return obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1]; } }