当前位置: 首页 > news >正文

做网站建设/seo排名优化软件

做网站建设,seo排名优化软件,武汉软件公司都有哪些,王烨名字含义代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 文章目录 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯理论基础一、常规题目二、解题步骤…

代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯


文章目录

  • 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 理论基础
    • 一、常规题目
    • 二、解题步骤
  • 509. 斐波那契数
    • 一、动态规划v1
    • 二、动态规划v2
    • 三、动态规划v3
  • 70. 爬楼梯
    • 一、动态规划v1
    • 二、动态规划v2
  • 746. 使用最小花费爬楼梯
    • 一、dp v1
    • 二、dp v2


理论基础

一、常规题目

在这里插入图片描述

二、解题步骤

对于动态规划问题,我将拆解为如下五步曲,这五步都搞清楚了,才能说把动态规划真的掌握了!

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

509. 斐波那契数

题目链接

  1. 确定dp数组以及下标的含义
    dp[i]的定义为:第i个数的斐波那契数值是dp[i]
  2. 确定递推公式
    状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化
    题目中把如何初始化也直接给我们了,如下: dp[0] = 0; dp[1] = 1;
  4. 确定遍历顺序
    从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
  5. 打印dp数组

一、动态规划v1

class Solution:def fib(self, n):# 排除 Corner Caseif n == 0:return 0# 创建 dp table dp = [0] * (n + 1)# 初始化 dp 数组dp[0] = 0dp[1] = 1# 遍历顺序: 由前向后。因为后面要用到前面的状态for i in range(2, n + 1):# 确定递归公式/状态转移公式dp[i] = dp[i - 1] + dp[i - 2]# 返回答案return dp[n

二、动态规划v2

class Solution:def fib(self, n):if n<=1:return ndp=[0,1]for i in range(2,n+1):total = dp[0]+dp[1]dp[0]=dp[1]dp[1]=total  return total

三、动态规划v3

class Solution:def fib(self, n):if n<=1:return nprev0,prev1 = 0,1for _ in range(2,n+1):cur = prev0 + prev1prev0,prev1 = prev1,curreturn cur

70. 爬楼梯

题目链接

  1. 确定dp数组以及下标的含义
    dp[i]的定义为:爬到第i层楼梯,有dp[i]种方法
  2. 确定递推公式
    dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。
    dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么
    状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化
    dp[1] = 1; dp[2] = 2;
  4. 确定遍历顺序
    从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
  5. 打印dp数组

一、动态规划v1

class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""dp = [0]*(n+1)if n <=2:return ndp[1]=1dp[2]=2for i in range(3,n+1):dp[i]=dp[i-1]+dp[i-2]return dp[n]

二、动态规划v2

class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""dp=[0,1,2]if n <=2:return nfor i in range(3,n+1):total = dp[1]+dp[2]dp[1]=dp[2]dp[2]=totalreturn total

746. 使用最小花费爬楼梯

题目链接

  1. 确定dp数组以及下标的含义
    dp[i]的定义为:到达第i台阶所花费的最少体力为dp[i]
  2. 确定递推公式
    dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]
    dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]
    状态转移方程 : dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
  3. dp数组如何初始化
    dp[0] = 0; dp[1] = 0;
  4. 确定遍历顺序
    因为是模拟台阶,而且dp[i]由dp[i-1]dp[i-2]推出,所以是从前到后遍历cost数组就可以了
  5. 打印dp数组

一、dp v1

class Solution(object):def minCostClimbingStairs(self, cost):""":type cost: List[int]:rtype: int"""dp = [0] * (len(cost) + 1)dp[0] = 0  # 初始值,表示从起点开始不需要花费体力dp[1] = 0  # 初始值,表示经过第一步不需要花费体力for i in range(2, len(cost) + 1):# 在第i步,可以选择从前一步(i-1)花费体力到达当前步,或者从前两步(i-2)花费体力到达当前步# 选择其中花费体力较小的路径,加上当前步的花费,更新dp数组dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])return dp[len(cost)]  # 返回到达楼顶的最小花费

二、dp v2

class Solution(object):def minCostClimbingStairs(self, cost):""":type cost: List[int]:rtype: int"""dp0=0dp1=0for i in range(2,len(cost)+1):dp2=min(dp1+cost[i-1],dp0+cost[i-2])dp0=dp1dp1=dp2return dp2
http://www.fp688.cn/news/253.html

相关文章:

  • 深圳有名的做公司网站/代运营竞价公司
  • 江门网站建设教程/口碑营销属于什么营销
  • 网站锚点怎么做/百度搜索关键词排名优化推广
  • 网站建设毕业设计怎么做/网站怎么做外链
  • 有什么有趣的网站/磁力吧ciliba
  • 国家住房城乡建设厅网站/网络优化软件
  • 用dreamweaver怎么做网站/淘宝关键词优化
  • 南昌网优化网站设计公司/营销策略是什么
  • 网站推广广告公司/太原网站seo
  • 淄博的大型网站建设/免费引流在线推广
  • 世界500强企业中国有多少家/成都网站搭建优化推广
  • 启航做网站好吗/宁波优化网站厂家
  • 如何进行电商网站设计/百度手机极速版
  • 微商做图王官方网站/成功的软文推广
  • 怎样做自己的个人网站/seo如何优化关键词排名
  • 如何把网站加入白名单/搜索引擎优化的定义是什么
  • 有什么好的免费网站做教育宣传/seo网络营销外包公司
  • 网站规划建设与管理维护教程与实训/百度怎么做推广和宣传
  • 网站建设方案 pdf/2020 惠州seo服务
  • 东莞网站设计服务/google官网下载
  • 邯郸专业做网站地方/产品推广计划方案
  • 济南市工程造价信息网/长沙搜索排名优化公司
  • 邯郸网站设计注册/班级优化大师官网
  • 茶企业网站/百度关键词搜索热度
  • 电子商务网站的设计/夸克搜索
  • 网站建设搭建微商导航网站/学网络营销有用吗
  • 做网站人家直接百度能搜到的/域名注册新网
  • 做服装招聘的网站/怎么样推广最有效最快速
  • 网站建设空间什么意思/谷歌seo搜索优化
  • 溧阳网站建设制作/网站建设制作免费