[leetcode]#70. Climbing Stairs
2017-11-20 19:09
369 查看
题目翻译
你现在在爬楼梯,爬到顶要n阶。每次你可以爬1或2阶楼梯,你有多少种不同的爬法可以到顶?
其实是斐波那契数列
动态规划
当有n个台阶时,可供选择的走法可以分两类:
1,先跨一阶再跨完剩下n-1阶;
2,先跨2阶再跨完剩下n-2阶。所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和。
这个时候如果用递归,复杂度会太大而无法AC,所以用动态规划记录历史数据,即可
你现在在爬楼梯,爬到顶要n阶。每次你可以爬1或2阶楼梯,你有多少种不同的爬法可以到顶?
其实是斐波那契数列
class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ pre = cur = 1 for i in xrange(1, n): pre, cur = cur, pre+cur return cur
动态规划
当有n个台阶时,可供选择的走法可以分两类:
1,先跨一阶再跨完剩下n-1阶;
2,先跨2阶再跨完剩下n-2阶。所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和。
这个时候如果用递归,复杂度会太大而无法AC,所以用动态规划记录历史数据,即可
class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ if n == 0 or n == 1 or n == 2: return n steps = [1, 1] for i in xrange(2, n+1): steps.append(steps[i-1] + steps[i-2]) return steps
相关文章推荐
- [leetcode][easy]70. Climbing Stairs
- LeetCode 70. Climbing Stairs
- LeetCode70. Climbing Stairs
- [勇者闯LeetCode] 70. Climbing Stairs
- [leetcode]70. Climbing Stairs(Java)
- LeetCode 70. Climbing Stairs
- Dynamic Programing -- Leetcode problem 70. Climbing Stairs
- leetcode-70. Climbing Stairs(DP)
- [LeetCode]problem 70. Climbing Stairs
- [LeetCode]70. Climbing Stairs
- leetcode--70. Climbing Stairs
- 【LeetCode】70. Climbing Stairs
- LeetCode||70. Climbing Stairs
- Leetcode 70. Climbing Stairs (Easy) (cpp)
- leetcode 70. Climbing Stairs
- leetcode70. Climbing Stairs
- LeetCode 70. Climbing Stairs(爬梯子)
- LeetCode 70. Climbing Stairs
- LeetCode 70. Climbing Stairs
- leetcode 70. Climbing Stairs