Leetcode算法学习日志-70 Climbing Stairs
来源:互联网 发布:耳鼻喉网络咨询话术 编辑:程序博客网 时间:2024/05/17 21:54
Leetcode 70 Climbing Stairs
题目原文
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.
题意分析
求总的走法,可以采用逆向思维,分为最后一步是走的两步还是一步。
解法分析
采用逆向思维的方式,利用将最后一步除去,求解剩余的子问题,子问题的解能组成原问题的解。此题虽然不是最优化问题,但也是采用动态规划的方法。令原问题的解为W(n),则递归方程为W(n)=W(n-1)+W(n-2),采用自底向上的方法,先求出W(n-1)+W(n-2),即可得到W(n),并且此题每种规模的问题就一个,直接由小到大加起来即可,类似斐波拉切数列,所以不需要存储每一个规模的问题,只需要在用的时候放入两个零时变量中。C++代码如下:
class Solution {public: int climbStairs(int n) { if(n==0) return 0; vector<int> ways(n+2,0); ways[0]=0; ways[1]=1; int i; for(i=2;i<n+2;i++) ways[i]=ways[i-1]+ways[i-2]; return ways[i-1]; }};
由于只有一个for循环,所以算法复杂度为O(n)。阅读全文
0 0
- Leetcode算法学习日志-70 Climbing Stairs
- LeetCode(70)Climbing Stairs
- leetcode 70-Climbing Stairs
- [leetcode 70] Climbing Stairs
- leetcode || 70、 Climbing Stairs
- [leetcode] #70 Climbing Stairs
- LeetCode 70 Climbing Stairs
- leetcode 70 Climbing Stairs
- LeetCode---(70)Climbing Stairs
- leetcode#70 Climbing Stairs
- Leetcode[70]-Climbing Stairs
- leetcode[70]:Climbing Stairs
- Leetcode 70 Climbing Stairs
- leetcode 70:Climbing Stairs
- Leetcode #70 Climbing Stairs
- [leetcode 70]Climbing Stairs
- leetcode 70: Climbing Stairs
- leetCode #70 Climbing Stairs
- poj1260 Pearls(Dp)
- LYOS —— Hardware Communication With Ports & Interrupts
- GUI——制作菜单
- PL/SQL 游标的使用
- 【Linux 内核网络协议栈源码剖析】socket.c——BSD Socket层(1)
- Leetcode算法学习日志-70 Climbing Stairs
- Linux应用开发———已经添加了C函数对应的头文件,还是提示找不到那个函数
- 传值
- poj 1466 匈牙利算法呀~
- JS大坑之一this关键字
- 树链剖分模板
- (转)谭志勇、赵微:区块链技术在中国商品交易市场的应用与发展
- 5.常用操作符-2017/08/13--1
- 正则表达式——匹配字符问题