Climbing Stairs (leetcode)
来源:互联网 发布:淘宝的igtt是真的吗 编辑:程序博客网 时间:2024/05/21 07:30
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
使用动态规划的方法解决此问题:
位置n 只能由 位置(n- 1)走一步,或者位置 (n - 2)走两步到达,即:
step [n] = step[n-1] + step[n - 2];
1> 方法一:
时间复杂度 O(n);
空间复杂度 0(n);
class Solution {public: int climbStairs(int n) { //step[n] = step[n-1] + step[n -2] if (n <= 2) { return n; } int *step = new int[n + 1]; step[0] = 0; step[1] = 1; step[2] = 2; for (int i = 3; i <= n; ++i) { step[i] = step[i -1] + step[i - 2]; } unsigned int retval = step[n]; delete [] step; return retval; } };
2> 方法2
时间复杂度 : O(n)
空间复杂度 : O(1)
class Solution {public: int climbStairs(int n) { //step[n] = step[n-1] + step[n -2] if (n <= 2) { return n; } int step_curr = 0; //step[n] int step_pre = 2; //step[n - 1] int step_pre_pre = 1; //step[n - 2] for (int i = 0; i < n - 2; ++i) { step_curr = step_pre + step_pre_pre; step_pre_pre = step_pre; step_pre = step_curr; } return step_curr; }};
0 0
- LeetCode: Climbing Stairs
- LeetCode: Climbing Stairs
- [LeetCode]Climbing Stairs
- LeetCode Climbing Stairs
- [Leetcode] Climbing Stairs
- Leetcode: Climbing stairs
- LeetCode Climbing Stairs
- [LeetCode] Climbing Stairs
- leetcode 107: Climbing Stairs
- [LeetCode] Climbing Stairs
- [LeetCode]Climbing Stairs
- [leetcode]Climbing Stairs
- LeetCode-Climbing Stairs
- [leetcode] Climbing Stairs
- LeetCode - Climbing Stairs
- LeetCode:Climbing Stairs
- Leetcode Climbing Stairs
- LeetCode | Climbing Stairs
- Building Your First Process with Oracle BPM 11g
- iOS面试总结 - 4.ios开发中的基本设计模式
- 25岁,最好的年纪才开始
- COM-IE-(2)
- 最大连续和的方法总结
- Climbing Stairs (leetcode)
- post和get的区别?
- 数据库性能调优之后,进一步的验证和分析
- 3分钟,9个Q&A让你快速知道Docker到底是什么
- BZOJ 1032 JSOI 2007 祖码Zuma 区间DP
- 车牌识别系统Matlab算法实现
- java中calendar方法实现日期格式化
- 为exe添加图标,更改exe图标--python
- Android工具类,持续更新中