思路
分析了一下题目
显然动态规划问题
- 当n>2时, 当你想要走到第n个台阶时,你需要先走到第n-1个或者第n-2个台阶
- 当你想要走到第n-1个台阶时,你需要先走到第n-2个或者第n-3个台阶
- 当你想要走到第n-2个台阶时,你需要先走到第n-3个或者第n-4个台阶
- … 依次类推
- 分解至第1,2台阶时,就是分析的 底层问题
- 分析是从上至下,但是编写程序是从下至上
编写
class Solution:
def climbStairs(self, n: int) -> int:
ans=[0]*n
for i in range(n):
#底层台阶
if(i == 0): ans[i] = 1
elif(i==1): ans[i] = 2
#n>2时, 当前台阶等于前两个台阶路径之和
else: ans[i] = ans[i-1]+ans[i-2]
return ans[n-1]
思考与学习
动态规划
: 问题,从上至下,一步步分解,找准大问题,再分解成小问题,
找重复步骤,存储起来
好的方法—— 作图分析