1. 概述

  • 给定一个非负整数数组,最初位于数组的第一个位置。
  • 中的每个元素代表在该位置可以跳跃的最大长度。
  • 判断是否能够到达最后一个位置。

思路:对比最大能跳跃到的位置 与 当前最大能跳跃到的位置

2. 解题

  1. <?php
  2. class Solution
  3. {
  4. /**
  5. * 给定一个非负整数数组,最初位于数组的第一个位置。
  6. *
  7. * 数组中的每个元素代表在该位置可以跳跃的最大长度。
  8. *
  9. * 判断是否能够到达最后一个位置。
  10. *
  11. * @param Integer[] $nums
  12. * @return Boolean
  13. */
  14. public function canJump($nums)
  15. {
  16. if (!$nums) return true;
  17. $max = 0;
  18. foreach ($nums as $k => $v) {
  19. // 如果最大跳跃位置到不了当前位置,则判定无法到达最后一个位置
  20. if ($k > $max) return false;
  21. $max = max($max, $k + $v);
  22. if ($max >= count($nums) - 1) return true;
  23. }
  24. return false;
  25. }
  26. }
  27. $nums = [2, 3, 1, 1, 4];
  28. $cls = new Solution();
  29. $r = $cls->canJump($nums);
  30. var_dump($r);