:::danger 代码还没有完成

    • 动态方程
    • 边界情况:对于目标位置arr[m-1][n-1]的周围被围绕这个边界情况遗漏了。 :::
    1. /**
    2. * @param {number[][]} obstacleGrid
    3. * @return {number}
    4. */
    5. var uniquePathsWithObstacles = function(obstacleGrid) {
    6. let m = obstacleGrid.length
    7. let n = obstacleGrid[0].length
    8. if (m === 1 && n === 1) return obstacleGrid[0][0] === 0 ? 1 : 0
    9. if (m === 1) return obstacleGrid[0].includes(1) ? 0 : 1
    10. if (n === 1) {
    11. for (let i = 0; i<m; i++) {
    12. if (obstacleGrid[i][0] === 1) return 0
    13. }
    14. }
    15. if (obstacleGrid[0][0] === 1 || obstacleGrid[m-1][n-1] === 1) return 0
    16. for (let i = 0; i<m; i++) obstacleGrid[i][0] = obstacleGrid[i][0] === 0 ? 1 : 0
    17. for (let i = 0; i<n; i++) obstacleGrid[0][i] = obstacleGrid[0][i] === 0 ? 1 : 0
    18. for (let i = 1; i<m; i++) {
    19. for (let j = 1; j<n; j++) {
    20. obstacleGrid[i][j] === 1
    21. ? obstacleGrid[i][j] = 0
    22. : obstacleGrid[i][j] = obstacleGrid[i-1][j] + obstacleGrid[i][j-1]
    23. }
    24. }
    25. return obstacleGrid[m-1][n-1]
    26. };