【每日一题】【递归实现、自下而上、优化】-2022年1月12日-NC68 跳台阶
2024-10-20 13:52:54
描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:0 \leq n \leq 400≤n≤40
要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)
方法1:函数递归
public class Solution {
public int jumpFloor(int target) {
if(target == 1 || target == 0) {
return 1;
}
return jumpFloor(target - 1) + jumpFloor(target - 2);
}
}
方法2:自下而上,使用数组
public class Solution {
public int jumpFloor(int target) {
int[] res = new int[target + 1];
res[0] = 1;
res[1] = 1;
for(int i = 2; i <= target; i++) {
res[i] = res[i - 1] + res[i - 2];
}
return res[target];
}
}
注意:数组名起为res/f都行
方法3:变量空间的优化
public class Solution {
public int jumpFloor(int target) {
int p = 1, q = 1;
//和自下而上的方法使用相同的循环结构
for(int i = 2; i <= target; i++) {
int temp = p;
p = p + q;
q = temp;
}
return p;
}
}
注意:可以和自下而上基于数组的方法使用相同的循环结构
最新文章
- 【面试】输出";蛇形";矩阵
- mysql 导入导出方法。
- H5移动前端性能优化
- hdu2255 二分图最大权配KM
- c# SqlHelper Class
- [MFC] 如何更改MFC程序图标
- 【IOS基础知识】NSTimer定时器使用
- raspberry pi vpn
- 第一次知道Winform的窗体之间传值怎么写,分享给小白~
- linux在文件打包和压缩
- 精益IT组织与分享式领导
- Linux驱动手动绑定和解绑定
- C++学习建议
- Android 开发 SharedPreferences数据会话类模板
- 让photoshop cc 支持 webp格式
- ASP.NET MVC多语言 仿微软网站效果(转)
- linux内核编程helloworld(中级)
- Mysql 之权限体系
- 9.27 h5日记
- (NOI2014)(bzoj3669)魔法森林