1. 概述

给出一个非负整数数组,你最初定位在数组的第一个位置。    数组中的每个元素代表你在那个位置可以跳跃的最大长度。    

判断你是否能到达数组的最后一个位置。

2. 解题

  1. <?php
  2. class Solution {
  3. /**
  4. * @param array $arr
  5. * @return mixed
  6. */
  7. public function canJump(array $arr) {
  8. $can = [];
  9. if ($arr[0] == 0) {
  10. return false;
  11. } else {
  12. $can[0] = true;
  13. }
  14. for ($i = 1; $i < count($arr); $i++) {
  15. for ($j = 0; $j < $i; $j++) {
  16. if (!$can[$j]) continue;
  17. $c = ($j + $arr[$j] >= $i) ? true : false;
  18. $can[$i] = $c;
  19. }
  20. }
  21. return $can[count($arr) - 1];
  22. }
  23. }
  24. // $arr = [2,3,1,1,4];
  25. $arr = [3,2,1,0,4];
  26. $cls = new Solution();
  27. $r = $cls->canJump($arr);
  28. var_dump($r);