题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
算法1
(数学方法)
- 由题意知, 级台阶中的每一级跳或不跳都没有关系,只要跳了最后一级( 第 级 )台阶 该青蛙都能跳到第n级台阶
- 所以总共有 种跳法
时间复杂度是 ,空间复杂度是
C++代码
class Solution {
public:
int jumpFloorII(int number) {
return 1 << (number - 1);
}
};
算法2
(暴力)
- 暴力计算,每次累计下 的值
时间复杂度是 ,空间复杂度是
C++代码
class Solution {
public:
int jumpFloorII(int number) {
int *f = new int[number + 1];
f[0] = 1;
for (int i = 1; i <= number; i ++) {
int sum = 0;
for (int t = 0; t < i ; t ++) {
sum += f[t];
}
f[i] = sum;
}
int res = f[number];
delete[] f;
return res;
}
};
写在最后:我的博客主要是对计算机领域所学知识的总结、回顾和思考,把每篇博客写得通俗易懂是我的目标,分享技术和知识是一种快乐 ,非常欢迎大家和我一起交流学习,有任何问题都可以在评论区留言,也期待与您的深入交流(^∀^●)