代码随想录 Day-25

力扣题目 509.斐波那契数

思路

  • 很理所当然的,可以使用递归的方式
  • 其次是用动态规划的方式,动态规划的核心就是递推公式。
    • 那么递推和递归一字之差,有什么区别呢?(递推和递归的区别)

1、递归

class Solution {//递归第一步:确定传入参数和返回值public int fib(int n) {//递归第二步:确定终止结果if(n == 0)return 0;if(n == 1)return 1;//递归第三步:确定单层递归的逻辑return fib(n-1) + fib(n-2);}
}

2、动态规划

动态规划五部曲:

  1. 确定dp数组以及下标的含义——第i个数的斐波那契数值是dp【i】
  2. 确定递推公式——dp【i】 = dp【i-1】+ dp【i-2】
  3. dp数组的初始化——dp【0】 = 0;dp【1】=1;
  4. 确定遍历顺序——从公式可以看出,数组dp的 i 依赖于前面的 i-1 和 i-2 ,所以从前往后顺序
  5. 打印数组——就是我们自己来举例模拟debug自己的代码是否正确
//非压缩版本
class Solution {public int fib(int n) {int[] dp = new int[n+1];if(n <= 1){return n;}else{dp[0] = 0;dp[1] = 1;for(int i=2; i<=n; i++){dp[i] = dp[i-1] + dp[i-2];}}return dp[n];}
}
//压缩版本
class Solution {public int fib(int n) {//int[] dp = new int[n+1];if(n <= 1){return n;}else{//dp[0] = 0;//dp[1] = 1;int a=0, b=1, sum=0;    //可以理解为a是i-2,b是i-1,sum是ifor(int i=2; i<=n; i++){//dp[i] = dp[i-1] + dp[i-2];sum = a+b;a = b;b = sum;}return sum;}//return dp[n];}
}


力扣题目  746.使用最小花费爬楼梯

思路

  1. dp数组的含义——到达i位置时,花费的体力dp【i】
  2. 确定递推公式——因为 i 是由 i-1 或者 i-2 来得到的,所以 i = (i-1 + cost) 与 (i-2 + cost) 的最小的哪一个
  3. 确定初始值——因为直接从该位置起来不用花费体力,dp1 = 0;dp0 = 0
  4. 确定遍历顺序—— 因为 i 是由 i-1 或者 i-2  推理出来的,所以由前往后遍历
  5. 打印数组

class Solution {public int minCostClimbingStairs(int[] cost) {int length = cost.length;int[] dp = new int [length + 1];    //这里+1是因为这个下标才是楼顶//因为第一步直接从0或1开始,不用花费dp[0] = 0;dp[1] = 0;//由提示可以看出,楼顶至少是下标为2for(int i=2; i <= length; i++){dp[i] = Math.min(dp[i-1] + cost[i-1],dp[i-2] + cost[i-2]);}return dp[length];}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OD C卷 - 反射计数

反射计数&#xff08;200&#xff09; 给定一个包含0 、1的二维矩阵&#xff1b;一个物体从给定的初始位置出发&#xff0c;在给定的速度下移动&#xff0c;遇到矩阵的边缘则发生镜面反射&#xff0c;无论物体经过0还是1&#xff0c;都不影响其速度&#xff1b;经过t时间单位后…

C++ 之多态虚函数原理及应用

文章目录 多态基本概念和原理虚函数的基本原理和概念虚析构和纯虚析构多重继承中的虚函数小结 多态基本概念和原理 多态的基本概念 **多态是C面向对象三大特性之一** 多态的定义 多态是一种面向对象编程概念&#xff0c;指同一个行为&#xff08;方法&#xff09;在不同的对象上…

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展&#xff0c;信息的获取变得比以往任何时候都更加便捷。在数字化时代&#xff0c;人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息&#xff0c;然而&#xff0c;这种机械式的检索方式有时候并不…

ubuntu 中安装docker

1 资源地址 进入ubuntu官网下载Ubuntu23.04的版本的镜像 2 安装ubuntu 这里选择再Vmware上安装Ubuntu23.04.6 创建一个虚拟机&#xff0c;下一步下一步 注意虚拟机配置网络桥接&#xff0c;CD/DVD选择本地的镜像地址 开启此虚拟机&#xff0c;下一步下一步等待镜像安装。 3…

书生·浦语大模型实战营之全链路开源体系

书生浦语大模型实战营之全链路开源体系 为了推动大模型在更多行业落地开花&#xff0c;让开发者们更高效的学习大模型的开发与应用&#xff0c;上海人工智能实验室重磅推出书生浦语大模型实战营&#xff0c;为广大开发者搭建大模型学习和实践开发的平台&#xff0c;两周时间带…

【Java程序设计】【C00352】基于Springboot的疫情隔壁酒店管理系统(有论文)

基于Springboot的疫情隔壁酒店管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以…

C语言例4-28:求两个正整数的最大公约数。

算法分析&#xff1a; 输入两个正整数m和nm%n 的余数 r&#xff0c;然后 mn;nr;当 n0, 则m是最大公约数&#xff0c;算法结束&#xff1b;否则转至执行2&#xff0c;重复上述过程&#xff0c;直到n0为止 代码如下&#xff1a; //求两个正整数的最大公约数。 #include<std…

PointNet++论文复现(三)【抽象层定义、分类模型 代码详解】

目录 抽象层 特征提取 整体代码 分类模型 以 pointnet2_cls_msg.py 为例 整体代码 抽象层 位于 pointnet2_utils.py 定义 特征提取 整体代码 # 特征提取 对应PointNet++ 中的 set abstraction (集合抽象化) # 首先, 通过 sample_and_group 操作形成局部 group # 然后, 对…

JAVA实现大文件的分片上传与下载(SPRINGBOOT+VUE3)

版本&#xff1a;6.5.40 代码&#xff1a;up6-jsp-springboot: Web大文件上传-jsp-springboot示例 - Gitee.com nosql示例 nosql示例不需要进行任何配置&#xff0c;可以直接访问测试。 SQL示例 1.创建数据库 2.配置数据库连接 3.自动下载maven依赖 4.启动项目 启动成功 6.访…

Autosar-NvM配置详解(免费)-1

1NvMd在Autosar架构中的位置 NvM模块包含&#xff1a;NvM, NemIf&#xff0c;Fee&#xff0c;Ea, Fls和Eep&#xff0c;它们的说明如下&#xff1a; NvM&#xff1a;NvM主要考虑的是数据的存储&#xff0c;直接与应用层进行交互。它主要针对的对象是数据&#xff0c;关心的是…

【功能实现】新年贺卡(蓝桥)

题目分析&#xff1a; 想要实现一个随机抽取功能 功能拆解&#xff1a;题目给了数组&#xff0c;我们采用生成随机数的方式&#xff0c;随机数作为数组的索引值访问数组的值。 并返回获取到的值&#xff0c;将获取到的值插入到页面中。 document.addEventListener(DOMConten…

TCPView下载安装使用教程(图文教程)超详细

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;更多干货&#xff0c;请关注专栏《网络安全自学教程》 TCPView是微软提供的一款「查看网络连接」和进程的工具&#xff0c;常用来查看电脑上的TCP/UDP连接…