典型的动态规划题目,只要找到递归方程,问题就迎刃而解了:
f(x,y) = f(x-1,y) + f(x,y-1)第63题和62题基本思路一样,就是多了个条件。DP代码如下:
/** * @param {number[][]} obstacleGrid * @return {number} */ var uniquePathsWithObstacles = function(obstacleGrid) { var row = obstacleGrid.length; if(row===0){ return 0; } var col = obstacleGrid[0].length; var array = []; for(var i=0;i<row;i++){ array[i] = []; if(obstacleGrid[i][0]==1){ break; }else{ array[i][0] = 1; } } for(j=i;j<row;j++){ array[j] = []; array[j][0] = 0; } for(i=0;i<col;i++){ if(obstacleGrid[0][i]==1){ break; }else{ array[0][i] = 1; } } for(var j=i;j<col;j++){ array[0][j] = 0; } for(i=1;i<row;i++){ for(j=1;j<col;j++){ if(obstacleGrid[i][j]==1){ array[i][j] = 0; }else{ array[i][j] = array[i-1][j] + array[i][j-1] } } } return array[row-1][col-1]; };