AC 剑指 Offer 10- II. 青蛙跳台阶问题

简介: AC 剑指 Offer 10- II. 青蛙跳台阶问题

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

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

示例 1:

输入:n = 2
输出:2
示例 2:

输入:n = 7
输出:21
示例 3:

输入:n = 0
输出:1
提示:

0 <= n <= 100

import java.math.BigInteger;

class Solution {
    /**
     * @Title: numWays
     * @Description: DP经典,重在推导DP公式
     * @author: itbird
     * @date 2022年3月15日 下午5:00:05
     * @param n
     * @return int 时间复杂度: O(N) 空间复杂度: O(1)
     */
    public int numWays(int n) {
        // 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法
        // f(1) = 1,f(2) = 2,f(3) = 3,f(4) = 5
        // f(n) = f(n-2) + f(n-1)

        if (n <= 0) {
            return 1;
        }

        if (n < 3) {
            return n;
        }

        BigInteger f1 = new BigInteger("1"); // 代表n-2
        BigInteger f2 = new BigInteger("2"); // 代表n-1
        BigInteger fn = new BigInteger("0");
        while (n > 2) {
            fn = f1.add(f2);
            f1 = f2;
            f2 = fn;
            n--;
        }
        return fn.mod(new BigInteger("1000000007")).intValue();
    }
}
目录
相关文章
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
Java Shell Android开发
Android构建系统:Android.mk(3)条件控制详解
Android构建系统:Android.mk(3)条件控制详解
440 1
|
分布式计算 监控 Hadoop
Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
576 0
|
数据采集 运维 关系型数据库
1小时迁移500GB 的MySQL数据
NineData 提供的数据复制同时包含了数据迁移和数据同步的能力,在不影响业务的前提下,提供了高效、稳定、可运维的大数据量迁移能力。经实测,在源及目标实例同城情况下,500GB的MySQL数据的迁移,只需 1 个小时,平均迁移速度 142MB/s。
486 1
1小时迁移500GB 的MySQL数据
|
存储 移动开发 前端开发
H5技术:探索现代Web开发的未来
HTML5(H5)是一种用于构建现代Web应用程序的标准,它为开发者提供了更多的功能和能力。这篇博客将介绍H5技术的一些重要特性以及它们对Web开发的影响。
663 0
|
Linux
kali/debian/snap-store debain/linux的软件商店下载
kali/debian/snap-store debain/linux的软件商店下载
634 0
|
安全 网络协议 网络安全
HTTPS中的S是什么?
使用浏览器输入网址的时候,我们通常都会输入“http://”或者“https://”这样的开头(当然,更多情况下可能大家会输入www),然后才输入对应的域名地址,那这里肯定就会有不少的网友疑惑,为什么有些地址会在前面加多一个“s”呢?那么多出的“s”是什么呢?
1365 0
HTTPS中的S是什么?
|
缓存 算法 Java
一文吃透JVM分代回收机制
一文吃透JVM分代回收机制
322 0
|
监控 Android开发
[RK3568 Android11]火焰图详解
[RK3568 Android11]火焰图详解
609 0
[RK3568 Android11]火焰图详解