LeetCode-63. Unique Paths II

来源:互联网 发布:c语言 strtok s 编辑:程序博客网 时间:2024/06/14 03:32

一、问题描述

  1. 求m行n列矩阵中从[0,0]到[m-1.n-1]的路径数量,如果矩阵[i,j]的值为1,则表示不能从此处通过;为0则表示可以通过。LeetCode-62
  2. 例如:[ [0,0,0],[0,1,0],[0,0,0]],路径数量为2.

二、解题思路

  1. 参照LeetCode-62中的空间优化后动归思路,但是result数组的初值需要判断obstacleGrid[i,j]的值是否为1,如果为1,则result[j]中到达该位置的路径数为0;否则,result[j]=result[j-1].

三、代码

public class Solution {    public int uniquePathsWithObstacles(int[][] obstacleGrid) {        if(obstacleGrid==null || obstacleGrid.length==0 || obstacleGrid[0].length==0)            return 0;        int[] result=new int[obstacleGrid[0].length];        for(int i=0;i<result.length;i++){            if(i==0){                if(obstacleGrid[0][0]==1)                    result[0]=0;                else                    result[0]=1;            }else{                if(obstacleGrid[0][i]==1)                    result[i]=0;                else                    result[i]=result[i-1];            }        }        for(int i=1;i<obstacleGrid.length;i++){            for(int j=0;j<obstacleGrid[0].length;j++){                if(j==0){                    if(obstacleGrid[i][j]==1)                        result[j]=0;                }else{                    if(obstacleGrid[i][j]==1)                        result[j]=0;                    else                        result[j]=result[j-1]+result[j];                }            }        }        return result[result.length-1];    }}