美文网首页
算法设计思想-动态规划

算法设计思想-动态规划

作者: sweetBoy_9126 | 来源:发表于2021-12-11 16:44 被阅读0次

1. 是什么

将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原来的问题。

2. 场景

2.1. 爬楼梯 leetCode 70

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
    示例 2:

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶
var climbStairs = function(n) {
    // n = 1 的时候有一种方法, n= 2的时候有两种,n=3 的时候有三种,所以我们需要
    // 把第0项也设成1,做成斐波那契数列
    let dep = [1,1];
    let i = 2;
    while(i <= n) {
        dep[i] = dep[i - 1] + dep[i -2];
        i+=1;
    }
    return dep[n];
};

空间复杂度和时间复杂度都是 O(n)

2.2. 打家劫舍 leetCode 198

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
示例 2:

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
偷窃到的最高金额 = 2 + 9 + 1 = 12 。

var rob = function(nums) {
    if (!nums || nums.length === 0) return 0;
    const dep = [0, nums[0]]
    for(let i = 2; i <= nums.length; i++) {
        dep[i] = Math.max((dep[i- 2]) + nums[i-1], dep[i-1])
    }
    return dep[nums.length]
};

相关文章

  • 动态规划算法

    动态规划(Dynamic Programming,DP)是算法设计思想中最难也是最有趣的部分。掌握动态规划算法,对...

  • 算法设计思想-动态规划

    1. 是什么 将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原来的问题。 2. 场景 2.1. 爬楼...

  • 带你入门动态规划算法

    一、导论  动态规划(Dynamic Programming,DP)是算法设计思想中最难也是最有趣的部分。掌握动态...

  • 动态规划

    --tags: 算法,动态规划 动态规划解题 引入:动态规划 和贪心法 都是算法的思想方法 贪心算法——像 第一类...

  • 动态规划-js

    动态规划 参考:算法分析与设计-贪心&动归 漫画:什么是动态规划? 【数据结构与算法】 DP 动态规划 介绍 介绍...

  • 算法之动态规划设计思想

    动 态规划: 将原问题拆借位若干子问题,同时保存子问题的答案,是的每一个子问题只求解一次,最终获得原问题的答案 举...

  • 那些经典算法:贪心算法

    贪心算法和分治算法、动态规划算法、回溯算法都是一种编程思想,深入理解这些编程思想,我们也可以根据实际情况设计自己的...

  • 动态规划算法之解决背包问题

    动态规划算法介绍 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决...

  • 动态规划算法

    原文: 常用的算法设计思想主要有动态规划、贪婪法、随机化算法、回溯法等等,这些思想有重叠的部分,当面对一个问题的时...

  • 算法思想 - 动态规划

    今天我们来学习一个非常出名的算法思想:动态规划。说它出名,不仅因为它比较高效地解决了某一类问题,还因为它出了名地难...

网友评论

      本文标题:算法设计思想-动态规划

      本文链接:https://www.haomeiwen.com/subject/ulbkfrtx.html