leetcode刷题-动态规划part01

news2024/11/15 15:52:50

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

    • 动态规划基础
    • 509. 斐波那契数
    • 70.爬楼梯
    • 746. 使用最小花费爬楼梯

动态规划基础

在这里插入图片描述

动规五部曲:

  1. dp数组以及下标的含义:dp[i][j] dp[i]
  2. 递推公式
  3. dp数组如何初始化
  4. 遍历顺序(背包、物品)
  5. 打印dp数组

509. 斐波那契数

leetcode题目链接
代码随想录文档讲解

思路

斐波那契数: 1 1 2 3 5 8

  1. 确定dp[i]含义:第i个斐波那契数的值为dp[i]
  2. 递推公式:dp[i] = dp[i-1] + dp[i-2]
  3. dp数组初始化:dp[0]=1 dp[1]=1
  4. 确定遍历顺序:从前向后

伪代码(C++)

vector<int> dp[n+1]
dp[0]=1; dp[1]=1;
for(i=2; i<=n; i++){
	dp[i]=dp[i-1]+dp[i-2]
}
return dp[n]

python代码

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

70.爬楼梯

leetcode题目链接
代码随想录文档讲解

思路

楼梯一共有1阶台阶:1种;两阶台阶:2种;三阶台阶:3种(1阶+2阶)
递推关系:依赖于前两种状态,f(n)=f(n-1)+f(n-2)

  1. 确定递推数组的含义:达到第i阶有dp[i]种方法
  2. 递推公式:dp[i]=dp[i-2]+dp[i-1]
  3. dp数组初始化:dp[1]=1 ( dp[0]=1 n是正整数,dp[0]没有意义,令它为1,可使代码跑出正确的结果)
  4. 正序遍历,从前到后

其实就是 斐波那契数

伪代码(C++)

 

python代码

# dp代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n==1: return 1
        dp = [1] * (n+1)
        for i in range(2,n+1):
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n]
  
# 以前的代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n<2: return 1
        a, b, sum = 1, 1, 0 # 0阶1阶台阶分别有1种
        for _ in range(n-1):
            sum = a+b
            a, b = b, sum
        return sum

# 以前的代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n<=2:
            return n
        curr = 0
        prev1 = 2
        prev2 = 1
        for i in range(3,n+1):
            curr = prev1 + prev2
            prev1, prev2 = curr, prev1
        return curr

746. 使用最小花费爬楼梯

leetcode题目链接
代码随想录文档讲解

思路

相当于爬楼梯题目的消费版

  1. dp数组的含义,到达i位置的花费为dp[i]
  2. dp[i]可由dp[i-1]跳1步或者dp[i-2]跳2步:dp[i] = min(dp[i-1] + cost[i-1] , dp[i-2] + cost[i-2])
  3. 初始化:dp[0]=0, dp[1]=0
  4. 每一个都是由前两个数组求得的,往前求

伪代码(C++)


python代码

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        dp = [0] * (len(cost)+1)
        for i in range(2, len(cost)+1): 
            dp[i] = min(dp[i-1] + cost[i-1], dp[i-2]+cost[i-2])
        return dp[len(cost)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型格局变天:Llama3.1诞生

一、Llama3.1的背景 北美时间7月23日&#xff0c;Meta公司&#xff08;原Facebook&#xff09;宣布了一项重大突破&#xff1a;开源模型Llama 3.1的正式发布。这一举措预示着AI技术的又一次飞跃&#xff0c;Llama 3.1有望成为迄今为止最强大的开源大型语言模型&#xff08;LLM&…

Startup-SBOM:一款针对RPM和APT数据库的逆向安全工具

关于Startup-SBOM Startup-SBOM是一款针对RPM和APT数据库的逆向分析与安全检测工具&#xff0c;该工具本质上是一个简单的 SBOM 实用程序&#xff0c;旨在提供正在执行的包的内部视图&#xff0c;可以帮助广大研究人员枚举所有软件包以及可执行文件、服务和版本。 该工具的流程…

Docker 部署loki日志 用于微服务

因为每次去查看日志都去登录服务器去查询相关日志文件&#xff0c;还有不同的微服务&#xff0c;不同日期的文件夹&#xff0c;超级麻烦&#xff0c;因为之前用过ELK&#xff0c;原本打算用ELK&#xff0c;在做技术调研的时候发现了一个轻量级的日志系统Loki&#xff0c;果断采…

【大模型从入门到精通29】开源库框架LangChain 语义搜索:高级检索策略3

这里写目录标题 实现上下文压缩与 MMR 的文档检索设置基于压缩的检索器与 MMR探索替代文档检索方法加载和准备文档实现 TF-IDF 和 SVM 检索器最佳实践结论理论问题实践问题 实现上下文压缩与 MMR 的文档检索 设置基于压缩的检索器与 MMR 上下文压缩的目标是通过关注与查询最相…

tomcat的初实现与memcache

文章目录 1. tomcat实现多虚拟机2. tomcat定制访问日志格式3. tomcat实现MSM集群4. JVM垃圾回收算法和分代5. memcache使用&#xff0c;安装和MSM原理 1. tomcat实现多虚拟机 一键安装tomcat并启动&#xff0c;使用openjdk #!/bin/bash version10.1.28 usertomcat grouptomcat…

【C++初阶】:C++入门篇(一)

文章目录 前言一、C命名空间1.1 命名空间的定义1.2 命名空间的使用 二、C的输入和输出2.1 cin和cout的使用 三、缺省参数3.1 缺省参数的分类 四、函数重载4.1 函数重载概念及其条件4.2 C支持函数重载原理 -- 名字修饰 前言 C是在C语言的基础之上&#xff0c;增加了一些面向对象…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector

1.杨辉三角 . - 力扣&#xff08;LeetCode&#xff09; 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> arr;int i 0;int j 0;for (i…

Git入门 -- 区域详解

Git入门 – 区域详解 1.Git 1.1 Git与SVN的区别 Git不仅仅是版本控制系统&#xff0c;同时也是内容管理系统。以下是Git与SVN的区别&#xff1a; 分布式&#xff1a;Git是分布式但SVN不是&#xff0c;这是Git与其他系统的核心区别。存储方式为元数据&#xff1a;Git在存储数…

Python 如何使用正则表达式进行复杂文本处理

正则表达式&#xff08;Regular Expressions&#xff0c;简称 regex 或 RE&#xff09;是一种强大的工具&#xff0c;用于在文本中执行模式匹配和搜索操作。通过正则表达式&#xff0c;你可以轻松地查找、替换和提取文本中的特定模式。Python 提供了一个内置的 re 模块&#xf…

数据结构--树(笔记)

文章目录 1. 含义及术语2. 应用3. 常见二叉树种类① 二叉树(Binary tree)一般树和二叉树的区别 ② 完美二叉树(Perfect Binary tree)③ 完全二叉树(Complete Binary tree)④ 满二叉树(Full Binary tree)完美二叉树、完全二叉树和满二叉树 ⑤ 平衡二叉树(Balanced Binary tree)二…

基于STM32开发的智能门锁系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化密码输入与验证门锁控制与状态指示Wi-Fi通信与远程监控应用场景 家庭智能门锁办公室智能门禁系统常见问题及解决方案 常见问题解决方案结论 1. 引言 智能门锁系统通过集成键盘模块…

自学编程从哪个语言入手比较好?

自学编程时选择哪个语言作为起点&#xff0c;仍然取决于你的个人兴趣、学习目标和职业规划。希望以下建议可以帮到你。 Python&#xff1a; 如果你对数据分析、机器学习、人工智能、Web 开发或自动化脚本编写等领域感兴趣&#xff0c;Python 是一个非常好的起点。它的语法简洁…

java如何通过jdbc操作数据库

1. 安装JDBC 官网地址&#xff1a;官网地址选择 下载后&#xff0c;解压缩&#xff0c;然后将mysql-connector-j-9.0.0.jar文件放到项目目录下 编写操作数据库代码 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql…

20240819 每日AI必读资讯

&#x1f4da;AI爆料人遭全网封禁&#xff01;OpenAI等25个机构祭大招&#xff0c;一眼辨别AI机器人 - 最近半个月&#xff0c;全网被OpenAI的「AI爆料人」「草莓哥」iruletheworldmo愚弄。所有人没有等他预测的GPT-4o large模型&#xff0c;反被AI初创MultiOn创始人揭穿身份—…

Squid:概念、代理案例

目录 Squid 缓存代理 Web代理的工作机制 代理类型 传统代理 透明代理 使用代理的好处 示例和案例 Squid安装示例 使用源码包安装Squid 一些其他的安装参数&#xff08;安装用时较长&#xff09; 为什么异步io要指定线程数&#xff1f; 配置和初始化Squid 运行测试…

大咖齐聚!2024深圳eVTOL展首批发言嘉宾阵容亮相!

大咖齐聚&#xff01;2024深圳eVTOL展首批发言嘉宾阵容亮相&#xff01; 由上海市航空学会、广东省航空航天学会主办的2024深圳eVTOL产业发展大会暨低空经济展览会将于9月23-25日在深圳坪山燕子湖国际会展中心盛大召开。 2024深圳eVTOL产业发展大会由主论坛与低空经济、航电系…

一年秀一次!稚晖君的人形机器人上新了,还有开源、免费彩蛋

一年一秀&#xff0c;稚晖君的第二代人形机器人来了。 灵巧小手&#xff0c;正在麻将桌上叱咤风云&#xff1a; 不对不对&#xff0c;让我们先看看整体气质&#xff1a; 然后是常规家务&#xff0c;能看出来也是非常熟练&#xff1a; 在大模型风靡的 2024 年&#xff0c;如果说…

FreeRtos----------- 同步互斥

一、同步的缺陷&#xff1a;全局变量协同两个任务 1.建立两个任务&#xff1a;CalcTask 、LcdPrintTask xTaskCreate(CalcTask, "task1", 128, NULL, osPriorityNormal, NULL);xTaskCreate(LcdPrintTask, "task2", 128, &g_Task2Info, osPriorityNorm…

详解Element-UI el-table表格中勾选checkbox(selection)多选删除

本节讲解的是关于组件库中el-table组件多选删除功能的实现。 1.Vue文件内的引用 2.页面数据 3.存储多选数据 4. 处理多选数据 这里通过循环的方式找到数据并对数据删除&#xff0c;这种方式易于理解&#xff0c;但不一定是最优方案

springboot的自动配置和怎么做自动配置

目录 一、Condition 1、Condition的具体实现 2、Condition小结 &#xff08;1&#xff09;自定义条件 &#xff08;2&#xff09;SpringBoot 提供的常用条件注解 二、Enable注解 三、EnableAutoConfiguration 注解和自动配置 1、EnableAutoConfiguration的三个注解属性…