/** * @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]; };