【刷题笔记8.13】【动态规划相关】LeetCode题目:斐波那契数列、爬楼梯

news2024/11/24 12:32:12

【动态规划相关】LeetCode题目:斐波那契数列、爬楼梯

(一)爬楼梯

题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
在这里插入图片描述
提示:
1 <= n <= 45

题目分析(***)

(n个台阶)
1个台阶 :1种方法(一次走一个台阶)
2个台阶 :2种方法(连续两次走一个台阶 或 一次走两个台阶)
3个台阶:3种方法(大家注意昂,此处这三种方法是怎么得到的,并不是说你再像之前那样重新一个一个计算,而是这样,对于3个台阶这种情况,我们可以在上述2个台阶的基础上再走一步,或是在上述1个台阶的基础上再走两步,所以三个台阶这种情况的方法数量是基于上述一个台阶和两个台阶的基础上计算得来,即1 + 2 = 3)
4个台阶:5种方法(在2个台阶的基础上走两步 或 在3个台阶的基础上走一步, 即 2 + 3 = 5)
。。。
n个台阶 :num[n-2] + num[n-1] 种方法

代码实现如下

方法1:

public class Solution {
    public int climbStairs(int n) {
        //如果台阶数n小于2直接返回n即对应的方法数(其实这样做的目的是我们后面设定的数组的大小n+1,
        // 而为了方便数组下标是从1开始的,如果n=1,是会有数组越界异常,因为num[2]中只有数组num[0]和num[1],这样num[2]=2就会有问题)
        if (n < 2) {
            return n;
        }

        //创建数组num,存储台阶数i所对应的方法数num[i]
        int[] num = new int[n+1];

        //台阶数为1有一种方法; 台阶数为2有2种方法
        num[1] = 1;
        num[2] = 2;
        
        //n个台阶 :num[n-2] + num[n-1] 种方法
        for (int i = 3; i <= n; i++) {
            num[i] = num[i-2] + num[i-1];
        }

        //返回n个台阶所对应的方法数
        return num[n];
    }

}

方法2:

public static int climbStairs(int n) {
        if (n < 3) {
            return n;
        }

        int a = 1;
        int b = 2;
        int sum = 0;

        for (int i = 3; i <= n; i++) {
            sum = a + b;
            a = b;
            b = sum;
        }

        return sum;
    }

(二)斐波那契额数列

题目描述

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:

F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
在这里插入图片描述

代码实现如下

方法1:

    public static int fib(int n) {
		//作用:大数的排列组合等,一般都要求将输出结果对1000000007取模(取余),防止int溢出。上面提示n的范围是0<= n <= 100
        final int a = 1000000007;

        if (n < 1) {
            return n;
        }

        int[] num = new int[n + 1];

        num[0] = 0;
        num[1] = 1;

        for (int i = 2; i <= n; i++) {
            num[i] = (num[i - 1] + num[i - 2]) % a;
        }

        return num[n];
    }

方法2:

public static int fib(int n) {

        final int x = 1000000007;

        if (n < 2) {
            return n;
        }

        int a = 0;
        int b = 1;
        int sum = 0;

        for (int i = 2; i <= n; i++) {
            sum = (a + b) % x;
            a = b;
            b = sum;
        }

        return sum;
    }

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

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

相关文章

【数学建模】清风数模更新5 灰色关联分析

灰色关联分析综述 诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素&#xff0c;系统整体的发展受各个因素共同影响。 为了更好地推动系统发展&#xff0c;我们需要清楚哪些因素是主要的&#xff0c;哪些是次要的&#xff0c;哪些是积极的&#xff0c;哪些是消极的…

P1123 取数游戏

取数游戏 题目描述 一个 N M N\times M NM 的由非负整数构成的数字矩阵&#xff0c;你需要在其中取出若干个数字&#xff0c;使得取出的任意两个数字不相邻&#xff08;若一个数字在另外一个数字相邻 8 8 8 个格子中的一个即认为这两个数字相邻&#xff09;&#xff0c;求…

自动驾驶数据集汇总

1.Nuscenes 数据集链接&#xff1a;nuScenes nuscenes数据集下有多个任务&#xff0c;涉及Detection&#xff08;2D/3D&#xff09;、Tracking、prediction、激光雷达分割、全景任务、规划控制等多个任务&#xff1b; nuScenes数据集是一个具有三维目标注释的大型自动驾驶数…

从AI到人机再到人机环:十年四本书

写这四本书的初衷还是得从剑桥图书馆说起&#xff0c;自从2012年来到剑桥逐渐适应了这里的环境和学术氛围以后&#xff0c;除了与朋友们聚会聊天&#xff0c;就是准备好矿泉水和面包&#xff0c;到学校各个图书馆里去看书、找书、借书了。记得那是2013年春天的一个下午&#xf…

HLS+System Generator实现FIR低通滤波器

硬件&#xff1a;ZYNQ7010 软件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、MATLAB设计低通滤波器 FPGA系统时钟 50MHz&#xff0c;也是采样频率。用 MATLAB 生成 1MHz 和 10MHz 的正弦波叠加的信号&#xff0c;并量化为 14bit 整数。把…

Word(1):文章页码设置

1.需求 在文档的封皮页不设置页码&#xff0c;在目录页页码设置为罗马数字&#xff0c;在正文使用阿拉伯数字。 2.解决方法 step1&#xff1a; 在封皮页的最后&#xff0c;点击”插入“-分隔符-分节符&#xff08;下一页&#xff09; step2&#xff1a;在目录页的最后&…

掌握这5本书,转行程序员不再难

后台收到读者提问&#xff1a; 我想转行程序员&#xff0c;请推荐几本可以帮助我转行成功的书。 我自己也是大学毕业后&#xff0c;自学转行程序员的&#xff0c;走了很多的弯路。下面几本书&#xff0c;给了我很多帮助。 &#xff11;、推荐图书 以下是5本可以帮助你转行成为…

24届近3年上海电力大学自动化考研院校分析

今天给大家带来的是上海电力大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、上海电力大学 学校简介 上海电力大学&#xff08;Shanghai University of Electric Power&#xff09;&#xff0c;位于上海市&#xff0c;是中央与上海市共建、以上海市管理为主的全日…

2023“钉耙编程”中国大学生算法设计超级联赛(5)

Typhoon 计算几何&#xff0c;点到线段距离 String Magic (Easy Version) Manacher可持久化线段树 Touhou Red Red Blue DP 模拟 Expectation (Easy Version) 签到&#xff0c;组合数学 Tree 树形DP Cactus Circuit 仙人掌图&#xff0c;tarjan找简单环 Counting Stars 暴力…

8.13 刷题记录(4道题)

8.13 刷题记录 6. 反转链表方法一&#xff1a; 迭代方法二&#xff1a;递归 7. 合并两个排序的链表8. 复杂链表的复刻9. 二叉搜索树与双向链表 6. 反转链表 原题链接 方法一&#xff1a; 迭代 1 -> 2 -> 3 -> 4 i j 1 <- 2 -> 3 -> 4 i j 就像这样迭代 /…

每日一题——旋转数组的最小数字(II)

旋转数组的最小数字——II 题目链接 注&#xff1a;此题是昨天旋转数组的最小数字——I的拓展延伸&#xff0c;昨天题目数组的条件是不会存在重复元素&#xff0c;而本题数组的元素可以重复&#xff0c;因此建议先做前面一题&#xff0c;进行思考&#xff0c;这样求解这一题的…

python print单引号和双引号区别

python中单引号和双引号有什么区别 942次阅读 没有评论 单引号和双引号 在Python中我们都知道单引号和双引号都可以用来表示一个字符串&#xff0c;比如 str1 python str2 "python" str1和str2是没有任何区别的。但是如果遇到需要转义字符的情况&#xff0c;来…

面试热题(反转字符串中的单词)

给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在前导空格、尾随空格…

Skeleton-Aware Networks for Deep Motion Retargeting

Skeleton-Aware Networks for Deep Motion Retargeting解析 摘要1. 简介2. Related Work2.1 运动重定向&#xff08;Motion Retargeting&#xff09;2.2 Neural Motion Processing 3. 概述&#xff08;Overview&#xff09;4. 骨骼感知深度运动处理4.1 运动表征4.2 骨架卷积4.3…

《论文阅读12》RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds

一、论文 研究领域&#xff1a;全监督3D语义分割&#xff08;室内&#xff0c;室外RGB&#xff0c;kitti&#xff09;论文&#xff1a;RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 2020 牛津大学、中山大学、国防科技大学 论文链接论文gi…

pyqt5多线程(子线程执行将结果返回到主线程上,提示对话框)

pyqt5多线程&#xff08;子线程执行将结果返回到主线程上&#xff0c;提示对话框&#xff09; 1.为什么要多线程执行 在主线程ui界面点击登录后&#xff0c;加延时10s,&#xff08;模拟调用接口登录&#xff0c;假设耗时10s&#xff09;,ui主线程在等待请求返回结果&#xff…

Es、kibana安装教程-ES(二)

上篇文章介绍了ES负责数据存储&#xff0c;计算和搜索&#xff0c;他与传统数据库不同&#xff0c;是基于倒排索引来解决问题的。Kibana是es可视化工具。 分布式搜索ElasticSearch-ES&#xff08;一&#xff09; 一、ElasticSearch安装 官网下载地址&#xff1a;https://www…

Kotlin runBlocking launch多个协程读写mutableListOf时序

Kotlin runBlocking launch多个协程读写mutableListOf时序 import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlockingfun main(args: Array<String>) {var lists mutableListOf<String>()runBlocking {launch {r…

jsoup解析html之table表格

jsoup解析html之table表格 jsoup说明 一款Java 的HTML解析器 jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于jQuery的操作方法来取出和操作数据。 主要功能 从一…

Mac M2 Pro安装使用Cocoapods

Mac Pro M2安装使用Cocoapods 在新公司要做iOS开发&#xff0c;所以在新电脑上安装Cocoapods 在升级gem&#xff0c;sudo gem update --system&#xff0c;和安装cocoapods时都遇到如下的提示&#xff1a; ERROR: While executing gem ... (Errno::EPERM)Operation not per…