题目
解法
最终目标是求最大跳跃距离,如果最后发现可以跳到比最后一格要多,那么也就可以跳到最后一格
- 可以按照两种思想理解
- 贪心,每次求最大的跳跃距离
- dp 公式: \(f_n=\left \{ \begin{array}{lr} max(f_{n-1}, nums[n] + n), & n > 1 \\ n, & n=1 \end{array} \right.\)
class Solution {
/**
* @param Integer[] $nums
* @return Boolean
*/
function canJump($nums) {
if (empty($nums)) {
return true;
}
if (count($nums) == 1) {
return true;
}
$max = $nums[0];
for ($i = 1; $i < count($nums) - 1; $i++) {
if ($i > $max) {
return false;
}
$max = max($i + $nums[$i], $max);
}
return $max >= count($nums) - 1;
}
}