题目描述:

跳跃游戏 - 图1

代码实现:

  • 贪心算法,我的思路好像跟那些题解的思路不太一样。首先做这道题,我先考虑的是什么情况可以出现false,就是除了数组的最后一位,有一位出现0且这个时候的max=i(因为max不可能小于i),除了这种情况,其他都是true.
  • 时间复杂度:O(n)
  1. /**
  2. * @param {number[]} nums
  3. * @return {boolean}
  4. */
  5. var canJump = function(nums) {
  6. var max = 0
  7. for (var i = 0; i < nums.length - 1; i++ ) {
  8. if (nums[i] + i > max) {
  9. max = nums[i] + i
  10. }
  11. if (nums[i] === 0 && max === i) {
  12. return false
  13. }
  14. }
  15. return true
  16. };

跳跃游戏 - 图2