lintcode climbing-stairs 爬楼梯 递归 循环
来源:互联网 发布:oppo手机数据自动打开 编辑:程序博客网 时间:2024/05/18 00:57
问题描述
lintcode
笔记
爬n级楼梯的方法数,等于爬上n-1级楼梯的方法数(再爬1级),加上爬上n-2级楼梯的方法数(再爬2级)。
climbStairs(n) = climbStairs(n-1) + climbStairs(n-2)
但是这样算会有大量的重复计算。可以将中间结果缓存起来。(代码2)
也可以根据这个递推式自底向上地计算。先算climbStairs(1),climbStairs(2)。。一直算到climbStairs(n)。(代码1)
代码1
class Solution {public: /** * @param n: An integer * @return: An integer */ int climbStairs(int n) { // write your code here if (n == 0 || n == 1) return 1; int pre = 1; int now = 1; for (int i = 2; i <= n; i++) { int tmp = now; now = pre + now; pre = tmp; } return now; }};
代码2
class Solution {public: /** * @param n: An integer * @return: An integer */ map<int, int> m; int climbStairs(int n) { // write your code here if (n == 1 || n == 0) return 1; int res1, res2; if (m.find(n-1) != m.end()) res1 = m[n-1]; else { res1 = climbStairs(n-1); m[n-1] = res1; } if (m.find(n-2) != m.end()) res2 = m[n-2]; else { res2 = climbStairs(n-2); m[n-2] = res2; } return res1 + res2; }};
0 0
- lintcode climbing-stairs 爬楼梯 递归 循环
- LintCode Climbing Stairs 爬楼梯
- LintCode | Easy | 爬楼梯 | Climbing Stairs
- 爬楼梯(LintCode Climbing Stairs)
- leetcode_70. Climbing Stairs 爬楼梯,非递归算法
- Climbing Stairs 爬楼梯 @LeetCode
- Leetcode Climbing Stairs 爬楼梯
- Climbing Stairs(爬楼梯)
- LeetCode--Climbing Stairs(爬楼梯)
- LeetCode | Climbing Stairs(爬楼梯)
- Climbing Stairs 爬楼梯方法 动态规划
- LeetCode OJ 之 Climbing Stairs ( 爬楼梯 )
- LeetCode-Climbing Stairs(爬楼梯问题)
- [leetcode]Climbing Stairs(爬楼梯 C语言)
- 爬楼梯的问题Climbing Stairs
- LeetCode 70. Climbing Stairs(爬楼梯)
- Climbing Stairs 爬楼梯的选择
- 70. Climbing Stairs (爬楼梯)
- 关于"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"的解决方案
- android studio上非常好用的快捷键
- CSS定位
- 回溯法求解数独的全部解
- java中常用的一些方法(一)
- lintcode climbing-stairs 爬楼梯 递归 循环
- C# 指针之美
- Java线程池使用说明【比较全面】
- 使用Qt Quick Controls.Material 2.0 + 简单配色
- 编译预处理
- JavaWeb---会话管理---Cookie
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
- 查找电脑上某个端口占用,并将其删除
- Android Studio No tab content FrameLayout found for id 问题修复