题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:1≤n≤40
要求:时间复杂度:O(n) ,空间复杂度:O(1)
code
class Solution:
def jumpFloor(self,number):
dp1 = 1
dp2 = 2
dp3 = 3
if number == 1:
return dp1
if number == 2:
return dp2
for i in range(2,number):
dp3 = dp2 + dp1
dp1 = dp2
dp2 = dp3
return dp3
解题关键在于找到 dp[i] = dp[i-1] + dp[i-2],边界条件dp[1] = 1,dp[2] = 2是很好体现的。
动态规划的关键是找到规律(即状态转移方程)可能需要用到画图辅助找到规律,就像初中小学时的各种找规律的题目一样多思考才能找到规律。边界条件需要仔细确认。