leetcode 无法通过

来源:14-2 不同路径II-代码实操

机智帅气的小雨

2020-07-05

var uniquePathsWithObstacles = function (arr) {
    let m = arr.length // 行数
    let n = arr[0] ? arr[0].length : 0 // 列数
    if (!m || !n) return 0
    let dp = (m, n) => {
        // 检查起始或者目标元素是不是1(被占用了),如果起始或者最后那个格就是1,说明怎么都怎么不到那,直接返回0
        if (arr[m - 1][n - 1] === 1 || arr[0][0] === 1) {
            return 0
        }
        if (m === 2 && n === 2) {
            return (arr[1][1] === 1 || arr[1][0] + arr[0][1] === 2) ? 0 : (arr[1][0] === 1 || arr[0][1] === 1) ? 1 : 2
        } else if (m < 2 || n < 2) {
            if (m < 2) {
                return arr[m - 1].includes(1) ? 0 : 1
            } else {
                for (let i = 0; i < m; i++) {
                    if (arr[i][0] === 1) {
                        return 0
                    }
                }
                return 1
            }
        } else {
            return dp(m - 1, n) + dp(m, n - 1)
        }
    }
    return dp(m, n)
};

老师,我根据你的写法来了,简单的测试都过了,但是上 leetcode 上不能过。
图片描述
可以帮我看一下是哪里出错了吗?万分感谢老师的帮忙

写回答

2回答

慕粉1926294646

2020-11-07

提供一个思路:正向思维,遍历表的方式,比如先计算 2*2 的数组,再按 (m-1,n)+(m,n-1) 的方式计算

0
0

慕粉1926294646

2020-11-07

嗯,递归的思路在 LeetCode 会超时,等我写完其他思路再分享给你哈

0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程