过年自律第八天

91 阅读1分钟

如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想自己作为自律工具趁着过年没事每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的

2021放假第八天,2月13日

动态规划

题号:63
var uniquePathsWithObstacles = function (obstacleGrid) {
    let dptable = new Array(obstacleGrid.length)
    for (let i = 0; i < dptable.length; i++) {
        let arr = new Array(obstacleGrid[0].length)
        dptable[i] = arr
    }
    for (let i = 0; i < dptable.length; i++) {
        for (let j = 0; j < dptable[0].length; j++) {
            if (obstacleGrid[i][j] == 1) {
                dptable[i][j] = 0
            } else {
                //横行和竖立列特殊情况要判断
                //每一行,每一列,只要有一个位置堵了,这个位置后面的都算堵着
                //路径为0了
                //其它情况就是堵着了路径就为0
                if (i == 0) {
                    if (j == 0) {
                        dptable[i][j] = obstacleGrid[i][j] == 1 ? 0 : 1
                    } else {
                        dptable[i][j] = dptable[i][j - 1] == 1 ? 1 : 0
                    }
                } else {
                    if (j == 0) {
                        dptable[i][j] = dptable[i - 1][j] == 1 ? 1 : 0
                    } else {
                        dptable[i][j] = dptable[i - 1][j] + dptable[i][j - 1]
                    }
                }
            }
        }
    }
    return dptable[obstacleGrid.length - 1][obstacleGrid[0].length - 1]
};
题号:剑指offer10-2
//可压缩状态记录2个状态
var numWays = function (n) {
    let dptable = []
    dptable[0] = 1
    for (let i = 1; i <= n; i++) {
        if (i == 1) {
            dptable[1] = 1
        } else if (i == 2) {
            dptable[2] = 2
        } else {
            dptable[i] = (dptable[i - 1] + dptable[i - 2]) % 1000000007
        }
    }
    return dptable[n]
};