刷题-力扣-剑指 Offer 10- II. 青蛙跳台阶问题

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

题目链接

来源:力扣(LeetCode)
链接: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

题目分析

  1. 根据题目描述,跳到第n阶台阶的跳法数目
  2. 跳到第n阶台阶,可以在n-1阶跳1阶,也可以在n-2阶跳两阶。
  3. 假设dp[n]表示跳到第n阶的跳法,有状态转移方程dp[n]=dp[n-1]+dp[n-2];边界条件dp[0]=1,dp[1]=1

代码

class Solution {
public:
    int numWays(int n) {
        if (n == 0) return 1;
        if (n == 1) return 1;
        int front = 1;
        int tmp = 1;
        int rear = 1;
        while ((n--) - 1) {
            tmp = (rear + front) % 1000000007;
            front = rear;
            rear = tmp;
        }
        return rear;
    }
};
posted @ 2021-09-14 17:21  韩亚光  阅读(42)  评论(0编辑  收藏  举报