代码随想录 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.mzph.cn/news/776635.shtml

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

相关文章

Karmada 管理有状态应用 Xline 的早期探索与实践

背景与动机 目前随着云原生技术和云市场的不断成熟&#xff0c;越来越多的 IT 厂商开始投入到跨云多集群的怀抱当中。以下是 flexera 在 2023 年中关于云原生市场对多云多集群管理的接受程度的调查报告&#xff08;http://info.flexera.com&#xff09; 从 flexera 的报告中可…

软件杯 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

算法训练day51Leetcode139.单词拆分 多重背包了解 背包问题总结

139.单词拆分 . - 力扣&#xff08;LeetCode&#xff09; 题目分析 初始化&#xff1a;初始化一个布尔型向量dp&#xff0c;大小为s.size() 1&#xff0c;所有值初始化为false&#xff0c;除了dp[0]被设置为true。这个布尔数组代表字符串s[0..i]能否通过拼接字典中的单词来形…

CMT(Cross Modal Transformer)实验环境搭建

项目地址&#xff1a;https://github.com/junjie18/CMT 论文地址&#xff1a;https://arxiv.org/pdf/2301.01283.pdf 环境&#xff1a;Ubuntu 20.04、cuda 11.1、python 3.8 1.创建虚拟环境CMT conda create -n CMT python3.8 -y conda activate CMT2.安装pytorch的GPU版本&am…

U盘惊变:文件夹竟成应用程序?数据恢复全攻略!

一、U盘突发异状&#xff1a;文件夹秒变应用程序 在数字化时代&#xff0c;U盘作为便携存储设备&#xff0c;在日常生活和工作中扮演着重要角色。然而&#xff0c;近期不少用户反映&#xff0c;他们的U盘突然出现了诡异的现象&#xff1a;原本整齐划一的文件夹图标&#xff0c…

STM32G473之flash存储结构汇总

STM32G4系列单片机&#xff0c;为32位的微控制器&#xff0c;理论上其内部寄存器地址最多支持4GB的命名及查找&#xff08;2的32次方&#xff0c;地址命名为0x00000000至0xFFFFFFFF&#xff09;。STM32官方对4GB的地址存储进行编号时&#xff0c;又分割成了8个block区域&#x…

vulnhub靶场之driftingblues-3

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware 2.靶场…

Markdown 编辑器使用

CSDN 在博客开头加上 [TOC](你的目录标题)就可以根据博客内容自动生成如下所示的目录&#xff1a; 你的目录标题 Markdown 编辑器功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表无序列表…

代码设计原则

目录 软件设计的本质设计模式的六大原则设计模式的三种模式框架设计 软件设计的本质 开闭原则&#xff0c;核心是高内聚&#xff0c;低耦合 设计模式的六大原则 单一职责原则&#xff1a;就一个类而言&#xff0c;应该仅有一个引起它变化的原因开闭原则&#xff1a;对扩展开…

如何压缩视频到最小?教会你压缩原理~

在网上上传视频时&#xff0c;经常会遇到因为视频体积过大上传失败等情况发生&#xff0c;怎么降低视频体积呢&#xff1f;科普一个小知识&#xff1a;视频体积和视频的时长、编码格式、分辨率和比特率&#xff08;又称码率&#xff09;有关。视频文件大小计算公式&#xff1a;…

如何优化财务管理?中小型外贸企业实用指南

在当今全球化的商业环境中&#xff0c;越来越多的中小企业涉足外贸领域&#xff0c;以寻求更广阔的市场和发展空间。在这一过程中&#xff0c;财务管理的重要性尤为凸显&#xff0c;需关注外汇风险、税务合规性、现金流等多个方面的问题。 一、中小企业外贸财务管理难题 币种核…

Python入门练习 - 学生管理系统

Python 实现读书管理系统 """ 实现一个命令行版的读书管理系统 """ import os.path import sys# 使用这个全局变量&#xff0c;来管理所有的学生信息 # 这个列表的每个元素都是一个‘字典’&#xff0c;每 个 字典就分别表示了一个同学students …

okcc呼叫中心系统如何配置呼入?

在OKCC呼叫中心系统中配置呼入通常包括以下步骤&#xff1a; 登录管理界面&#xff1a;使用管理员账户登录OKCC系统。 创建呼入号码&#xff1a;在系统内添加或选择一个用于呼入的电话号码&#xff0c;并将其与呼入队列关联。 设置呼入队列&#xff1a;配置呼入队列的基本参数…

利用R语言和curl库实现网页爬虫的技术要点解析

R语言简介 R语言是一种自由、跨平台的编程语言和软件环境&#xff0c;专门用于统计计算和数据可视化。它具有丰富的数据处理、统计分析和图形展示功能&#xff0c;被广泛应用于数据科学、机器学习、统计建模等领域。 R语言技术优势 丰富的数据处理功能&#xff1a; R语言拥有…

【C++】静态成员

静态成员在 C 类中是一个重要的概念&#xff0c;它包括静态成员变量和静态成员函数。 一、静态成员变量 1.理论 定义&#xff1a;由关键字static修饰类体中成员&#xff0c;称为类静态成员&#xff08;static class member&#xff09;。特点&#xff1a;静态成员变量是类的所…

Python实现猜数字游戏:一次编程旅程

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Vue3+Element Plus+TS开发企业管理后台(一)

系列文章&#xff0c;讲述一个企业管理后台的前后端设计&#xff0c;持续集成常见的页面功能和服务端设计思路。 效果展示 支持多种布局、主题配色随意切换 侧边菜单背景设置 主题色调切换 移动端完美适配 菜单侧边收起&#xff0c;适合移动端小空间场景。 功能开发计划 #merm…

外包干了4年,技术退步明显。。。。

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入上海某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

【机器学习】代价函数

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…