/**
* @param {number[][]} obstacleGrid
* @return {number}
*/
var uniquePathsWithObstacles = function (obstacleGrid) {
const m = obstacleGrid.length
const n = obstacleGrid[0].length
// n 行 m列
const matrix = Array.from(Array(m), item => new Array(n).fill(0))
for (let i = 0; i < n; i++) {
if (obstacleGrid[0][i]) {
break
}
matrix[0][i] = 1;
}
for (let i = 0; i < m; i++) {
if (obstacleGrid[i][0]) {
break;
}
matrix[i][0] = 1;
}
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
if (obstacleGrid[i][j]) {
matrix[i][j] = 0
} else {
matrix[i][j] = matrix[i - 1][j] + matrix[i][j - 1]
}
}
}
return matrix[m - 1][n - 1];
};