动态规划==》把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系(状态转移方程),逐个求解
本质==》一个规模比较大的问题(可以用两三个参数表示的问题),可以通过若干规模较小的问题的结果来得到的(通常会寻求到一些特殊的计算逻辑,如求最值等)
==============================Python======================================
class Solution: def climbStairs(self, n: int) -> int: if n == 1 or n == 2: return n a = 1 b = 2 for i in range(3, n+1): a, b = b, a + b return b
===================================Go========================================
func climbStairs(n int) int { if n == 1 { return 1 } dp := make([]int, n+1) dp[1] = 1 dp[2] = 2 for i := 3; i <= n; i++ { dp[i] = dp[i-1] + dp[i-2] } return dp[n] }