70. Climbing Stairs dynamic programming
来源:互联网 发布:yy挂机软件 编辑:程序博客网 时间:2024/05/23 01:20
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?
Note: Given n will be a positive integer.
首先是递归的算法,但是会超时
int climbStairs(int n) { if (n <= 0)return 0; else if (n == 1)return 1; else if (n == 2)return 2; return climbStairs(n - 1) + climbStairs(n - 2);}
接着用一个数组存储到第i步有多少种走法,但是这样的空间复杂度为O(n);
int climbStairs(int n) { vector<int>my; if (n <= 0)return 0; else if (n == 1)return 1; else if (n == 2)return 2; my.push_back(0); my.push_back(1); my.push_back(2); for (int i = 3; i <= n; i++){ my.push_back(my[i - 1] + my[i - 2]); } return my[n];}
最后,将空间复杂度降为O(1);
int climbStairs(int n) { if (n == 0)return 0; if (n == 1)return 1; if (n == 2)return 2; int pre = 1, cur = 2, next = 0; for (int i = 3; i <= n; i++){ next = pre + cur; pre = cur; cur = next; } return cur;}
阅读全文
0 0
- 70. Climbing Stairs dynamic programming
- Dynamic Programming:70. Climbing Stairs
- LeetCode /Dynamic Programming/Climbing Stairs
- LeetCode - Fibonacci Sequence/Dynamic Programming - Climbing Stairs
- [week 10][Leetcode][Dynamic Programming] Climbing Stairs
- [LeetCode]70.Climbing Stairs
- 70.Climbing Stairs
- LeetCode --- 70. Climbing Stairs
- [Leetcode] 70. Climbing Stairs
- [leetcode] 70.Climbing Stairs
- 70.Climbing Stairs
- 70. Climbing Stairs
- 70.Climbing Stairs
- 70. Climbing Stairs
- [leetCode]70. Climbing Stairs
- 70. Climbing Stairs
- 70. Climbing Stairs LeetCode
- 70. Climbing Stairs
- 基于beatifulsoup写一下简单的网络爬虫
- Swagger的三个常用注解
- Android Activity生命周期之屏幕切换与应用的响应性
- Python变量
- Atcoder Grand Contest 016F
- 70. Climbing Stairs dynamic programming
- hibernate4配置c3p0连接池报错
- SDK更新不了问题解决
- php处理base64编码和Unicode客户端交互的问题[z]
- MFC:窗口和滚动条的基情
- Android 采用广播接收者拦截外拨电话及其特性
- Android常用开源项目(十七)
- 八部追踪法提取小圆点轮廓计算中心坐标
- 统计在某月某时间段工作的天数,除去周末