生命是有光的
总有一个人会奋不顾身的去爱着你
超乎生死
无关外貌
70-爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
这一题也是很简单的很具有代表性的动态规划的题目了,这我下面贴出来的这篇文章里会有详细介绍动态规划思想
https://blog.csdn.net/weixin_36431280/article/details/86616672
这篇文章里也详细介绍了这道题,这儿我就不多讲了。
代码如下:
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 0:
return 0
# 定义一标记数组,用来记录每级台阶的步数信息
flag_list = [0]*(n+2)
flag_list[0] = 0
flag_list[1] = 1
# 遍历每级台阶,此处的index表示相对应的第index级台阶
for index in range(2, n+2):
# 第index级台阶所有的路线数等于第index-1级台阶和第index-2级台阶的路线数之和
flag_list[index] = flag_list[index-2]+flag_list[index-1]
return flag_list[n+1]
if __name__ == "__main__":
n = 10
all_route = Solution().climbStairs(n)
print(all_route)
执行效率在90%以上。