0063.不同路径II

0063.不同路径II (opens new window)

解法 : 动态规划

由于路上有障碍,只是只对数组中标记为0的位置进行判定,其余与上一题相同

java

public int uniquePathsWithObstacles(int[][] obstacleGrid) {
    int height = obstacleGrid.length, width = obstacleGrid[0].length;
    int[][] judgeArray = new int[height + 1][width + 1];
    judgeArray[0][1] = 1;
    for (int i = 1; i <= height; i++) {
        for (int j = 1; j <= width; j++) {
            if (obstacleGrid[i - 1][j - 1] == 0) {
                judgeArray[i][j] = judgeArray[i - 1][j] + judgeArray[i][j - 1];
            }
        }
    }
    return judgeArray[height][width];
}

go


func uniquePathsWithObstacles(obstacleGrid [][]int) int {
	m, n := len(obstacleGrid), len(obstacleGrid[0])
	matrix := make([][]int, m+1)
	for i := 0; i <= m; i++ {
		matrix[i] = make([]int, n+1)
	}
	matrix[0][1] = 1
	for i, row := range obstacleGrid {
		for j, cell := range row {
			if cell == 1 {
				continue
			}
			matrix[i+1][j+1] = matrix[i+1][j] + matrix[i][j+1]
		}
	}
	return matrix[m][n]
}