题目详情
给出一个非负整数数组,你最初在数组第一个元素的位置
数组中的元素代表你在这个位置可以跳跃的最大长度
判断你是否能到达数组最后一个元素的位置
例如
A =[2,3,1,1,4], 返回 true.
A =[3,2,1,0,4], 返回 false.
A =[3,4,1,0,4], 返回 true.
思路分析
- 朴素的思路是遍历当前位置可能的下一个位置,然后每个位置上都同样操作,直至走出数组。这样的缺点就是时间复杂度太高。
- 仔细看这个问题,是不是动态规划的套路?所以套用动态规划,是不是会有个dp数组记录当前最远可到的位置?那分析到这一点,我们就按照常规思路找关键点了。
dp = [] # 记录当前位置可到的最远位置
有了记录数组之后,要解决的就剩下,如何计算当前位置可以到的最原位置。
dp[0] = src_list