您的位置:首页 > Web前端

我要失业了 Day 1 剑指Offer 10-II.青蛙跳台阶问题

2020-06-06 05:22 585 查看

受疫情影响只能宅家,没有实验室的氛围完全成为一条咸鱼,小论文交给老师也没有恢复,今天开始记录剑指offer的刷题过程。

这道题让我自己数的话还真数不过来,可能这就是智商吧,然后书上说这个相当于斐波那契数列,当n>2的时候就有两种跳法,第一个是起步的时候跳一下,剩下的就是n-1的跳法,如果起步跳两下的话就是n-2的跳法,然后这不就是f(n)=f(n-1)+f(n-2)嘛,既然斐波那契数列的样子已经出来,剩下的就交给递归去解决?

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

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

示例 1:

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

输入:n = 7
输出:21

再看代码:

class Solution {
public:
int numWays(int n) {
int fn = 0;
int fn_1 = 1;
int fn_2 = 1 ;
if (n == 0) return 1;
if (n == 1) return 1;

int i = 2;
while(i<=n)
{
fn = (fn_1 + fn_2)%1000000007;
fn_2 = fn_1;
fn_1 = fn;
i++;
}
return fn;

}
};

嗯,跟上一道题一毛一样没跑了,唯一的不同就是f(0)=1,不过为什么台阶数是0还有一种跳法?不跳也算一种吗…
先这样了,剩下的时间要么看看链表,要么再肝一道?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: