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

【动态规划相关】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 <= 100final 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.hqwc.cn/news/66838.html

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

相关文章

android 如何分析应用的内存(十七)——使用MAT查看Android堆

android 如何分析应用的内存&#xff08;十七&#xff09;——使用MAT查看Android堆 前一篇文章&#xff0c;介绍了使用Android profiler中的memory profiler来查看Android的堆情况。 如Android 堆中有哪些对象&#xff0c;这些对象的引用情况是什么样子的。 可是我们依然面临…

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭&#xff08;可选&#xff09; 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie&#xff08;出错&#xff09; 导入cookie&#xff08;修改后&…

arcgis pro3.0-3.0.1-3.0.2安装教程大全及安装包下载

一. 产品介绍&#xff1a; ArcGIS Pro 这一功能强大的单桌面 GIS 应用程序是一款功能丰富的软件&#xff0c;采用 ArcGIS Pro 用户社区提供的增强功能和创意进行开发。 ArcGIS Pro 支持 2D、3D 和 4D 模式下的数据可视化、高级分析和权威数据维护。 支持通过 Web GIS 在一系列 …

PHP智能人才招聘网站mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP智能人才招聘网站 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址 https://download.csdn.net/download/qq_41221322/88199392 视频演示 PH…

《Kubernetes知识篇:常见面试题汇总》

正在不断地完善中&#xff0c;预计1个月的时间完成&#xff0c;覆盖整个Kubernetes知识面总结&#xff01; 一、概述 1、简述什么是 Kubernetes&#xff1f; kubernetes&#xff08;常简称k8s&#xff09;&#xff0c;是一个 为容器化应用提供自动化部署、扩展和管理的开源平台…

cs231n assignment2 q5 PyTorch on CIFAR-10

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

React Native 图片组件基础知识

在 React Native 中使用图片其实跟 HTML 中使用图片一样简单&#xff0c;在 React Native 中我们使用Image组件来呈现图片的内容&#xff0c;其中主要的属性有&#xff1a;source。这个属性主要是设置图片的内容&#xff0c;它可以是网络图像地址、静态资源、临时本地图像以及本…

nginx基于主机和用户访问控制以及缓存简单例子

一.基于主机访问控制 1.修改nginx.conf文件 2.到其他主机上测试 &#xff08;1&#xff09;191主机 &#xff08;2&#xff09;180主机 二.基于用户访问控制 1.修改nginx.conf文件 2.使用hpasswd为用户创建密码文件&#xff0c;并指定到刚才指定的密码文件webck 3.测试…

SQL注入之Oracle注入

SQL注入之Oracle注入 7.1 SQL注入之Oracle环境搭建 前言 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统…

如何将安卓 Gradle 模块打包发布到本地 Maven 仓库

文章目录 具体流程 笔者的运行环境&#xff1a; Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17 Android 的 Gradle 项目与一般的 Gradle 项目是不同的&#xff0c;因此对将 Gradle 模块打包发布到本地 Maven 仓库来说&#xff0c;对普通 Gradle …

【CTF-MISC】1和0的故事(二维码定位点补全)

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/216.html 文件中得到一个01方阵&#xff0c;可以在010 Editor中高亮设置将1涂为黑色、0涂为白色&#xff0c;如下图所示。 截图以后调整大小再加入三个定位点即可得到二维码。 扫描即可得到答案。 要注意的是…

轧钢传动控制系统液压比例阀控制器

轧钢传动控制系统是用于控制轧钢机械的电气系统&#xff0c;包括调速和控制系统两部分。 调速系统主要用来平滑调节转速&#xff0c;其核心部件是直流电动机调速单元。控制系统主要用于调节和稳定轧机的工作状态&#xff0c;使轧制过程始终处于最佳工作状态&#xff0c;其核心…