概述
题意描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
提示:0 <= n <= 100
示例:
示例一:
输入:n = 2
输出:2
示例二:
输入:n = 7
输出:21
解题思路:
Alice: 好熟悉的题目,F(n) = F(n-1) + F(n-2)
Bob: 这不是斐波那契数列吗
Alice: ????????
代码:
Python 方法二:循环
class Solution:
def numWays(self, n: int) -> int:
if n == 0:
return 1
elif n < 3:
return n
else:
prepre = 1
pre = 2
for x in range(n-2):
tmp = (pre + prepre) % 1000000007
prepre = pre
pre = tmp
return tmp % 1000000007
Java 方法二: 递归 , 超时了。
class Solution {
public int numWays(int n) {
if(n == 0){
return 1;
}else if(n < 3){
return n;
}else{
return (numWays(n-1) % 1000000007 + numWays(n-2) % 1000000007) % 1000000007;
}
}
}
Java 方法一: 循环
class Solution {
public int numWays(int n) {
if(n == 0){
return 1;
}
if(n < 3){
return n;
}else{
long ret = 0;
long pre = 2;
long prepre = 1;
for(int i=0; i<n-2; ++i){
ret = (pre + prepre) % 1000000007;
prepre = pre;
pre = ret;
}
return (int)(ret % 1000000007);
}
}
}
易错点:
- 输入为 0 时,输出是 1
总结:
- 取余
最后
以上就是愉快小海豚为你收集整理的LeetCode-剑指Offer-10- II. 青蛙跳台阶问题的全部内容,希望文章能够帮你解决LeetCode-剑指Offer-10- II. 青蛙跳台阶问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复