0
点赞
收藏
分享

微信扫一扫

动态规划进阶 JS

莞尔小迷糊 2022-04-17 阅读 61

动态规划进阶

动态规划进阶

也就是优化算法,对入门所列情景进行内存和数据结构上的优化,站在这个巨人的肩膀上

一维数组结构优化

备忘录+非递归

用数组进行存储,可以避免动态规划进行递归导致的重复计算,拿个入门题进行演示

BM64 最小花费爬楼梯

直接上代码,类似于斐波那契数列也是如此

function minCostClimbingStairs(cost) {
    if (cost.length < 2) return 0;
    let list = [0,0];
    for (let i = 2; i <= cost.length; i++) {
        list[i] = Math.min(list[i - 1] + cost[i - 1], list[i - 2] + cost[i - 2]);
    }
    return list[cost.length];
}
module.exports = {
    minCostClimbingStairs: minCostClimbingStairs,
};

备忘录基础上,再用双指针进行优化

这个如果没有使用备忘录写一遍,比较难想出来

BM64 最小花费爬楼梯

function jumpFloor3(number) {
    if (number < 1) { list[0] = 0; return 0; }
    if (number == 1) { list[1] = 1; return 1; }
    if (number == 2) { list[2] = 2; return 2; }
    let pre = 1
    let mid = 2
    let next = 3
    for (let i = 3; i <= number; i++) {
        next = mid + pre
        pre =mid
        mid = next
    }
    return next
}
console.log(jumpFloor3(100))

二维数组结构优化

这个先放着

举报

相关推荐

0 条评论