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

广东微信网站制作费用北京工装设计公司排名

广东微信网站制作费用,北京工装设计公司排名,网站版面结构,十大免费行情软件网站下载动态规划基础知识 力扣509.斐波那契数列【easy】 力扣70.爬楼梯【easy】 力扣198.打家劫舍【medium】 一、动态规划基础知识 1、动态规划的解题步骤 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 2、核…

动态规划基础知识
力扣509.斐波那契数列【easy】
力扣70.爬楼梯【easy】
力扣198.打家劫舍【medium】

一、动态规划基础知识

1、动态规划的解题步骤

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

在这里插入图片描述

2、核心思想

  • 把已经解决的小问题的结果保存下来,用来解决更大的问题
  • 动态规划 = 记住以前的结果 + 用它们推导新的结果,避免重复劳动!

在这里插入图片描述

3、常见定义

  • 最优子结构(Optimal Substructure)
    • 动态规划问题通常具有最优子结构,即一个问题的最优解可以通过子问题的最优解组合而成。
    • 换句话说,整体问题的最优解包含了其子问题的最优解。
  • 重叠子问题(Overlapping Subproblems)
    • 动态规划算法会多次计算相同的子问题,重叠子问题意味着在不同的计算中会遇到相同的子问题,因此可以将子问题的结果存储起来,以避免重复计算。
  • 状态表示
    • 动态规划的核心思想是通过定义状态来表示子问题的解,进而通过状态的转移来得到问题的最优解。
  • 递推公式
    • 对于每一个子问题,都有一个递推公式,定义了如何通过之前计算的子问题的解来得到当前子问题的解。
  • 边界条件
    • 边界条件是递推的基础,通常表示最小子问题的解,例如一个问题的最小解(通常是基础情况或初始值)。

4、灵神

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二、力扣509.斐波那契数列【easy】

题目链接:力扣509.斐波那契数列
在这里插入图片描述

视频链接:代码随想录

1、思路

  • dp五部曲
  • 时间复杂度: O ( n ) O(n) O(n)

2、代码

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

三、力扣70.爬楼梯【easy】

题目链接:力扣70.爬楼梯
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f43c7df8ca6a4ec8a703d6d05d91f94a.png#pic_ left =x300)
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 和大家结舍一样的三个版本做法

  • 分类讨论:

    • 如果最后一步爬了 1 个台阶,那么我们得先爬到 i−1,要解决的问题缩小成:从 0 爬到 i−1 有多少种不同的方法。
    • 如果最后一步爬了 2 个台阶,那么我们得先爬到 i−2,要解决的问题缩小成:从 0 爬到 i−2 有多少种不同的方法。
  • 由于这两种方法是互相独立的(爬的台阶个数不同),所以根据加法原理,从 0 爬到 i 的方法数等于这两种方法数之和,即 d f s ( i ) = d f s ( i − 1 ) + d f s ( i − 2 ) dfs(i)=dfs(i−1)+dfs(i−2) dfs(i)=dfs(i1)+dfs(i2)

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码

class Solution:def climbStairs(self, n: int) -> int:# @cache# def dfs(i):#     if i <= 1:#         return 1#     return dfs(i-1) + dfs(i-2)# return dfs(n)# dp = [0] * (n + 1)# dp[0] = dp[1] = 1# for k in range(2, n + 1):#     dp[k] = dp[k - 1] + dp[k - 2]# return dp[n]f0 = f1 = 1for _ in range(2,n + 1):new_f = f0 + f1f0 = f1f1 = new_freturn f1

四、力扣198.打家劫舍【medium】

题目链接:力扣198.打家劫舍
在这里插入图片描述
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 先介绍了回溯的做法,还是把问题归为子问题,可以用子问题表示原问题
  • 回溯时间复杂度太高,呈指数级,超时
  • 将重复计算的节点储存起来,发现我们其实只要计算n个结点,大大节约了时间复杂度,这就是法一
  • 我们将递归中的递去掉,只留下归,相当于只要自下而上的做法,这个时候较为递推,这就是我们的动态规划了,法二
  • 前两个的空间复杂度都是 O ( n ) O(n) O(n),我们发现其实计算新节点的时候只和前两个结点相关,所以“动态窗口”,只储存需要的前两个计算结果,空间复杂度就降下来了,法三
  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度:前两个 O ( n ) O(n) O(n) ,第三个优化到 O ( 1 ) O(1) O(1)

2、代码

  • 递归搜索 + 保存计算结果 = 记忆化搜索
class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)cashe = [-1] * ndef dfs(i):if i < 0:return 0if cashe[i] != -1:return cashe[i]res = max(dfs(i-1), dfs(i-2) + nums[i])cashe[i] = resreturn cashe[i]return dfs(n-1)
  • 动态规划:去掉递归中的递,只保留归
class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)dp = [0] * (n+1)dp[0] = 0dp[1] = nums[0]for k in range(2,n+1):dp[k] = max(dp[k-1], dp[k-2] + nums[k-1])return dp[n]
  • 空间优化:只保留就近需要的前两个值,空间复杂度从 O ( n ) O(n ) O(n) 降到 O ( 1 ) O(1) O(1)
class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)f0 = f1 = 0for i, x in enumerate(nums):new_f = max(f1, f0 + x)f0 = f1f1 = new_freturn new_f


文章转载自:

http://ZgtYSxc3.ngpLy.cn
http://4Wgn8sl4.ngpLy.cn
http://zMd6Ry4B.ngpLy.cn
http://5XItk0b3.ngpLy.cn
http://raqx9tif.ngpLy.cn
http://7k8DSxZL.ngpLy.cn
http://4vDQPeO4.ngpLy.cn
http://jOH8Wu1W.ngpLy.cn
http://NA7E16BH.ngpLy.cn
http://kO9iEXUv.ngpLy.cn
http://DxeFAQqn.ngpLy.cn
http://R60qlg6z.ngpLy.cn
http://VZb3qoPh.ngpLy.cn
http://s5F6ozii.ngpLy.cn
http://oZXQp4gf.ngpLy.cn
http://SckvdWPZ.ngpLy.cn
http://oI2DZkfo.ngpLy.cn
http://9e5wyYHL.ngpLy.cn
http://K6YMe41P.ngpLy.cn
http://MTQGwetY.ngpLy.cn
http://gPP0kfVn.ngpLy.cn
http://2zjhP2xl.ngpLy.cn
http://SxSyL5QE.ngpLy.cn
http://L7PawZZV.ngpLy.cn
http://CLhLQ8F3.ngpLy.cn
http://d6x2iQGP.ngpLy.cn
http://G09xnHA1.ngpLy.cn
http://syMZJ8St.ngpLy.cn
http://Ma6P2WBI.ngpLy.cn
http://Y9HZe6Ge.ngpLy.cn
http://www.dtcms.com/wzjs/656689.html

相关文章:

  • 石材石料网站搭建教程工作室做网站
  • 个人网站制作的主要内容最新一键自助建站程序源码
  • 陕西省建设监理协会网站成绩查询为什么输入网址打开的却是别的网站
  • 网站首页布局分析营销型网站重要特点是
  • 西宁房地产网站建设怎么开发微信公众号
  • 如何查询某个网站的设计公司做部队网站技术
  • 树莓派可以做网站的服务器吗wordpress自媒体新闻模板
  • wordpress文章分页代码怎样进行seo推广
  • 重庆品牌网站建设公司wordpress中文主题下载地址
  • 网站上怎样做下载文档链接响应式网站的设计尺寸
  • 荣耀手机官方网站首页小白怎么制作微信小程序
  • 盐城建设公司网站c2c网站的类型
  • 雅安北京网站建设做营销网站设计
  • 铜川北京网站建设下载百度2024最新版
  • 创办一个网站多少钱自媒体营销推广
  • 美美淘-专做女鞋拿货选款网站wordpress国人cms
  • 网站建设运营策划网络域名怎么看
  • app网站建站系统下载常州网站制作czyzj
  • 网站建设推广人员东坑网站建设
  • 导航网站怎么做点击网站模板安装
  • 腾讯理财是什么样的做网站一个网站怎么做软件好用
  • 用织梦做的网站ftp怎么登陆深圳城乡和建设局网站首页
  • 网站建设核心技术创新点网站登录界面用什么软件做
  • 百度智能云windows系统服务器建站网址大全怎么卸载
  • 会员制网站搭建wordpress小型企业的网站建设论文
  • 长长沙网站制作网站建设课程设计实验报告
  • 成都网站建设新网创想wordpress4.91
  • 12306网站是阿里做的秦皇岛市人事考试网
  • 贵州城乡建设厅考试网站四合一网站建设
  • 大型网站建设 cms cdm dmp云霄网站建设