📑 题目:55. 跳跃游戏

🚀 本题 LeetCode 传送门

题目大意

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

解题思路

  • 给出一个非负数组,要求判断从数组 0 下标开始,能否到达数组最后一个位置。
  • 这一题比较简单。如果某一个作为 起跳点 的格子可以跳跃的距离是 n,那么表示后面 n 个格子都可以作为 起跳点。可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离maxJump 不断更新。如果可以一直跳到最后,就成功了。如果中间有一个点比 maxJump 还要大,说明在这个点和 maxJump 中间连不上了,有些点不能到达最后一个位置。

代码

  1. func canJump(nums []int) bool {
  2. n := len(nums)
  3. if n == 0 {
  4. return false
  5. }
  6. if n == 1 {
  7. return true
  8. }
  9. maxJump := 0
  10. for i, v := range nums {
  11. if i > maxJump {
  12. return false
  13. }
  14. maxJump = max(maxJump, i+v)
  15. }
  16. return true
  17. }