代码随想录算法训练营第33天|LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

news2024/9/20 22:48:49

1. LeetCode 509. 斐波那契数

题目链接:https://leetcode.cn/problems/fibonacci-number/
文章链接:https://programmercarl.com/0509.斐波那契数.html
视频链接:https://www.bilibili.com/video/BV1f5411K7mo

在这里插入图片描述

思路:
动态规划步骤如下:

  1. 定义dp数组
    int[] dp = new int[n+1];
  2. 递推公式
    dp[i] = dp[i-1] + dp[i-2];
  3. 初始化
    dp[0] = 0;
    dp[1] = 1;
  4. 遍历顺序 从前往后
解法:
class Solution {
    public int fib(int n) {
        if (n==0 || n==1) {
            return n;
        }
        // 定义dp数组
        int[] dp = new int[n+1];

        //递推公式
        //dp[i] = dp[i-1] + dp[i-2];

        // 初始化
        dp[0] = 0;
        dp[1] = 1;

        // 遍历顺序 从前往后
        for (int i = 2;i < n+1;i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }

        return dp[n];
    }
}

2. LeetCode 70. 爬楼梯

题目链接:https://leetcode.cn/problems/climbing-stairs/description/
文章链接:https://programmercarl.com/0070.爬楼梯.html
视频链接:https://www.bilibili.com/video/BV17h411h7UH

在这里插入图片描述

思路:
解题关键是要理解:
爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。
那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。
所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。
至于为什么不考虑第一层连续跨两个一层到达第三层这个方式,是因为该方式包含在从第二层跨一层到达第三层的方式里面。
动态规划步骤如下:

  1. 定义dp数组 dp[i]表示爬到第i层楼梯,有dp[i]种方法
    int[] dp = new int[n+1];
  2. 递推公式
    dp[i] = dp[i-1] + dp[i-2];
  3. 初始化
    dp[1] = 1;
    dp[2] = 2;
  4. 遍历顺序 从前往后遍历
    注意:本题中n>=1,所以不需要考虑n=0的初始化情况。
解法:
class Solution {
    public int climbStairs(int n) {
        if (n<=2) return n;
        //1. 定义dp数组 dp[i]表示爬到第i层楼梯,有dp[i]种方法
        int[] dp = new int[n+1];
        //2. 递推公式
        //dp[i] = dp[i-1] + dp[i-2];
        //3.初始化
        dp[1] = 1;
        dp[2] = 2;
        //4.遍历顺序 从前往后遍历
        for (int i=3;i<=n;i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }

        return dp[n];
    }
}

3. LeetCode 746. 使用最小花费爬楼梯

题目链接:https://leetcode.cn/problems/min-cost-climbing-stairs/
文章链接:https://programmercarl.com/0746.使用最小花费爬楼梯.html#算法公开课
视频链接:https://www.bilibili.com/video/BV16G411c7yZ/

在这里插入图片描述

思路:

  1. 定义dp数组 dp[i]表示到达第i层最低花费
    int[] dp=new int[cost.length+1];
  2. 递推公式
    dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
  3. 初始化
    dp[0]=0;
    dp[1]=0;
  4. 遍历顺序 从前往后
    注意:只有爬楼梯时才会消耗费用,即dp[i]+cost[i],当处在某层时不消耗费用,即dp[i]。故由于可以选择从0或1下标开始爬楼梯,当处在0和1下标的楼层时,并没有消耗费用,此时初始化为0。
解法:
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        
        //1.定义dp数组 dp[i]表示到达第i层最低花费
        int[] dp=new int[cost.length+1];
        //2.递推公式
        //dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
        //3.初始化
        dp[0]=0;
        dp[1]=0;
        //4.遍历顺序 从前往后
        for (int i=2;i<=cost.length;i++) {
            dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }

        return dp[cost.length];
    }
}

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

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

相关文章

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor&#xff0c; ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移&#xff0c;生成迁移文件 py…

jvm优化

1.jvm组成 什么是jvm&#xff0c;java是跨平台语言&#xff0c;对不同的平台&#xff08;windos&#xff0c;linux&#xff09;&#xff0c;有不同的jvm版本。jvm屏蔽了平台的不同&#xff0c;提供了统一的运行环境&#xff0c;让java代码无需考虑平台的差异。 jdk包含jre包含…

ValueError和KeyError: ‘bluegrass’的问题解决

项目场景&#xff1a; 项目相关背景&#xff1a; 问题描述 遇到的问题1&#xff1a; KeyError: ‘bluegrass’ 不能识别某标签 遇到的问题2&#xff1a; xml etree.fromstring(xml_str) ValueError: Unicode strings with encoding declaration are not supported. Please …

K8S POD控制器:从基础到高级实战技巧

一、引言 在当今的云计算时代&#xff0c;Kubernetes&#xff08;K8s&#xff09;已成为最受欢迎的容器编排工具&#xff0c;它的核心组成部分之一——K8s POD控制器&#xff0c;扮演着至关重要的角色。这篇文章旨在深入探讨K8s POD控制器的内部工作原理、不同类型及其应用场景…

【数据结构】树和二叉树及堆的深入理解

【数据结构】树和二叉树及堆的深入理解 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】树和二叉树及堆的深入理解前言一.树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用 二.二叉树2.1 二叉树概念及…

clion中建立c文件工程,读取或创建sqlite3数据库文件

1.首先前往SQLite官网下载sqlite3所需文件 SQLite Download Page 2.解压文件&#xff0c;将其中的sqlite3.c和sqlite3.h拷贝到你对应的文件工程中 3.修改CMakeLists.txt文件&#xff0c;添加编译选项及连接文件 4.运行代码及查询数据库文件

实战:SpringBoot 15个功能强大Bean

下面这15个bean&#xff0c;可以很方便的帮我们获取当前环境信息&#xff0c;运行信息&#xff0c;参数信息等等 1. 应用程序参数Environment和ApplicationArguments SpringBoot程序在启动时&#xff0c;可以通过如下方式设置启动参数&#xff1a; java -jar app.jar --pack…

单链表算法 - 链表分割

链表分割_牛客题霸_牛客网现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的。题目来自【牛客题霸】https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70思路: 代码: /* struct ListNode {int val;struct List…

iterator(迭代器模式)

引入 在想显示数组当中所有元素时&#xff0c;我们往往会使用下面的for循环语句来遍历数组 #include <iostream> #include <vector>int main() {std::vector<int> v({ 1, 2, 3 });for (int i 0; i < v.size(); i){std::cout << v[i] << &q…

正则表达式(Ⅲ)——分组匹配

简介 为了给表达式分组&#xff0c;我们需要将文本包裹在 () 中 有点类似于匹配子串&#xff0c;只不过是找出所有的子串&#xff0c;并且拼成一组 分组之间需要有分割符&#xff0c;,或者-或者_都可以 直接分组 引用分组 这个比较难以理解 \1和\2的作用有两个&#xff1a…

Ubuntu系统修改SSH默认端口号

1.查看系统和系统版本号 rootecs-c0fe:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.7 LTS Release: 16.04 Codename: xenial rootecs-c0fe:~# uname -a Linux ecs-c0fe 4.4.0-210-generic #242-Ubunt…

Python入门------多个版本--虚拟环境的创建(非anaconda方式)

说明介绍&#xff1a; 1. 什么是虚拟环境 在Python中&#xff0c;虚拟环境&#xff08;Virtual Environment&#xff09;是一个独立的、隔离的Python运行环境&#xff0c;它拥有自己的Python解释器、第三方库和应用程序。通过创建虚拟环境&#xff0c;可以确保项目之间的依赖关…

Python 实验五 高级数据结构

一、实验目的 &#xff08;1&#xff09;掌握序列的基本操作 &#xff08;2&#xff09;掌握集合、字典的基本操作 二、实验环境 联网计算机一台/每人&#xff0c;内装Windows 7以上操作系统和安装Python 3.7集成开发环境IDLE。 三、实验内容 Sy5-1 列表实现。编写一个…

数据库的约束条件和用户管理

约束条件&#xff1a; 主键&#xff1a;主键约束 primary key 用于标识表中的主键列的值&#xff0c;而且这个值是全表当中唯一的&#xff0c;而且只不能为null 一个表只能有一个主键。 外键&#xff1a;用来建立表与表之间的关系。确保外键中的值于另一个表的主键值匹配&a…

camtasia怎么剪掉不用的部分 屏幕录制的视频怎么裁剪上下不要的部分 camtasia studio怎么裁剪视频时长 camtasia怎么剪辑视频教程

有时我们录制的屏幕内容&#xff0c;并不一定全部需要。那么&#xff0c;屏幕录制的视频怎么裁剪上下不要的部分&#xff1f;可以使用视频剪辑软件&#xff0c;或者微课制作工具来进行裁剪。屏幕录制的视频怎么旋转&#xff1f;录制视频的旋转也是一样的&#xff0c;均在编辑步…

可视化工具选择指南:助力企业数字化转型和新质生产力发展

随着信息技术的快速发展和新质生产力概念的兴起&#xff0c;可视化工具在各个行业中的作用日益凸显。这些工具不仅能够帮助用户更直观地理解和分析数据&#xff0c;还能提升团队的协作效率和决策质量。 在当今数字化转型迅速发展的背景下&#xff0c;新质生产力的概念正在成为…

Spring Boot项目的404是如何发生的

问题 在日常开发中&#xff0c;假如我们访问一个Sping容器中并不存在的路径&#xff0c;通常会返回404的报错&#xff0c;具体原因是什么呢&#xff1f; 结论 错误的访问会调用两次DispatcherServlet&#xff1a;第一次调用无法找到对应路径时&#xff0c;会给Response设置一个…

【React笔记初学总结一】React新手的学习流程笔记总结,掰开了揉碎了,下载安装基础结构学习

REACT学习记录 一、React是什么&#xff1a;二、尝试安装下载&#xff1a;三、理解都有什么四、基础网页学习&#xff1a;1.几个比较重要的资源包例子2.第一个react示例&#xff1a;&#xff08;掰开了揉碎了&#xff0c;咱们先看懂它最简单的结构&#xff09;3.第二个react示例…

Vue--Router(路由)

目录 一 Router(路由) 1.作用 2.实现步骤 3.注意 一 Router(路由) 1.作用 Router又叫做路由&#xff0c;简单来说&#xff0c;就是用来实现vue的页面之间跳转的。 我们都知道&#xff0c;使用vue必然会涉及到很多个组件&#xff0c;也就是页面&#xff0c;而页面之间肯定需…

mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据

效果&#xff1a; mars3d实现GraphicLayer获取当前相机视角内的可视点位&#xff08;矢量数据 相关依赖api&#xff1a; 1. map.getExtent(); 提取地球当前视域边界,示例&#xff1a;{ xmin: 70, xmax: 140, ymin: 0, ymax: 55, height: 0, } 2.graphicLayer.eachGraphic遍…