分析:例 nums=[5,3,2,0,8,10]
1 .建立dp[]数组,里面记录可以跳的最远的格子
i 表示格子:第 0 格 ,第 1 格,第 2 格,......,第 nums.length-1 格
dp[0] = i + nums[i] = 0 + 5 = 5,即在i = 0 处最远可以跳到 i=5的格子
dp[1] = i + nums[i] = 1 + 3 = 4,即在i = 1 处最远可以跳到 i=4的格子
dp[1]只可以跳到i = 4,而dp[0]可以跳到i=5 很明显 dp[0] > dp[1]
(我在 1 格子都没有上一个 0 格子跳得远,所以我肯定最后选择在 0 格子跳,而不是 1 格子跳)
2. 即,考虑到状态转移方程,所以dp[1] = max(dp[0],1+nums[1]) = max(5,4) = 5
dp[i] = max(dp[i-1],i+nums[i])
3. 最重要的! 最重要的! 最重要的! 最重要的!