跳跃游戏-问题分析
https://leetcode-cn.com/problems/jump-game/
## 问题描述: ![](https://img2020.cnblogs.com/blog/900860/202106/900860-20210627160955399-1850433585.png)
首先分析这个问题的复杂度在哪个地方:每个出发点有其值种可能,每往前推进一步又有若干可能,直接暴力去推演 当问题规模大的时候 算力堪忧。
这个时候想到找到 通过解决子问题来解决全局问题的子问题 一时间没了思路。
然后想到不如回想下经典的斐波齐契那数组。
乍一看上去 能感觉到这里面会有很多的重复计算,能不能像优化斐波齐契那数组那样,缓存一些结算结果?
并且感觉倒着去推演每个位置能否到达会相对容易些,且计算的结果可以利用:当前能否到达 取决于从终点往前算起,当前可达范围的位置 能否可达终点。
对于终点到终点必然可达是true。
于是就有了f(n)=for(int i=终点下表;i>n;i--){
if(a[n]>=i-n&&f(i)){
return true;
}
}
如此便从后往前推演出每个位置到终点是否可达
最后取f(0)