【剑指Offer】10- II. 青蛙跳台阶问题 解题报告(Python & C++)_python剑指offer跳台阶_负雪明烛的博客-程序员秘密

技术标签: 算法  剑指offer  牛客网  力扣  跳台阶  题解  leetcode  动态规划  

  • 作者: 负雪明烛
  • id: fuxuemingzhu
  • 个人博客:http://fuxuemingzhu.cn/
  • 个人微信公众号:负雪明烛

题目地址:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 7
输出:21

示例 3:

输入:n = 0
输出:1

提示:

  • 0 <= n <= 100

解题方法

动态规划

本题和「【剑指Offer】10- I. 斐波那契数列」完全一致,斐波那契数列这个题解,我写的非常详细,建议大家先看斐波那契数列的题解,本题也就迎刃而解了。

使用动态规划进行求解。

Python 代码如下:

class Solution:
    def numWays(self, n: int) -> int:
        dp = [0] * 101
        dp[0] = 1
        dp[1] = 1
        for i in range(2, n + 1):
            dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007
        return dp[n]

C++ 代码如下:

class Solution {
    
public:
    int numWays(int n) {
    
        vector<int> dp(101, 0);
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= n; i ++) {
    
            dp[i] = (dp[i - 1] + dp[i - 2]) % 1000000007;
        }
        return dp[n];
    }
};

日期

2018 年 3 月 9 日
2021 年 8 月 6 日 —— 最近热衷于各种工具提高自己的工作效率

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fuxuemingzhu/article/details/79501500

智能推荐

Ajax(阿贾克斯)基础_什么是阿贾克斯请求_星绵崽崽的博客-程序员秘密

Ajax是什么?服务器是什么?如何实现前后端数据交互?实际开发中,网页的数据需要从服务器获取。而Ajax技术就是来实现这一功能的。

摄像头编程大全(源码)_SunTojava的博客-程序员秘密

摄像头编程大全(源码)using System.Runtime.InteropServices;using System.Drawing;using System.Drawing.Imaging;namespace PickHead{/// /// 一个控制摄像头的类/// public class Pick{private const int WM_USER = 0x40

工资+副业月入10K+的学习经验,都总结到这几个公众号了_普通网友的博客-程序员秘密

学习如逆水行舟,不进则退;只有坚持不断的学习,才能保持进步。今天给大家精心挑选的这几个优质的公众号,感兴趣的可以关注。投基爱好者社区书豪同学2020~2022三年定投100万指数基金的实...

## CSP 201412-2 Z字形扫描(C语言)(100分)_<Running Snail>的博客-程序员秘密

试题编号:201412-2试题名称:Z字形扫描时间限制:2.0s内存限制:256.0MB问题描述在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:对于下面的4×4的矩阵,  1 5 3 9  3 7 5 6  9 4 6 4  7 3 1 3  ...

随便推点

C语言中对结构体赋初值_荒原狼的技术博客的博客-程序员秘密

C 语言中结构体的赋初值,可以对指定元素赋值,不必按照顺序,前提是通过 "." 来操作,在 c-free 5.0版本下验证通过。#include typedef struct{ int a; char b; float c;}structTest1;int main(int argc, char *argv[]){ structTest1 st1 = { .b = 'A',//

DM9000 驱动程序分析_dm9000驱动详解_pippala的博客-程序员秘密

说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码原文出自: http://blog.csdn.net/ypoflyer/article/details/6209922#comments

随机数函数rand()_rand算法_繁星蓝雨的博客-程序员秘密

1,使用前提rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同...

基于springcloud+springsecurity Oauth2.0+Jwt分布式系统项目的搭建_springcloud jwt 创建项目_immortal90的博客-程序员秘密

基于springsecurity分布式系统项目的搭建1.环境准备2.搭建流程3.总结1.环境准备2.搭建流程3.总结

selenium 不打开浏览器窗口模拟浏览器_weixin_34326558的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

定义rtrim()函数,功能:去掉字符串尾部空格_c语言rtrim_Young-Tham的博客-程序员秘密

【代码】定义rtrim()函数,功能:去掉字符串尾部空格。

推荐文章

热门文章

相关标签