0
点赞
收藏
分享

微信扫一扫

【LeetCode】55. 跳跃游戏(错题2刷)

曾宝月 2022-02-22 阅读 101

0

  • 思路
    一种想法就是求出每个位置的最大跳跃位置,当遇到当前位置的最大跳跃位置出现0时(且不是最后一个位置),说明达不到最后,若中间某个位置的最大跳跃位置大于等于最后一个位置,则说明能够满足。
    想到采用动态规划的思路:其实很好想,就是看剩余的步数它能跳到哪里。
func max(a, b int) int {
    if a >= b {
        return a
    }
    return b
}

func canJump(nums []int) bool {
    // 题目中已经说了nums长度至少为1
    nLen := len(nums)
    if nLen == 1 {
        return true
    }
    dp := make([]int, nLen)
    dp[0] = nums[0]
    for i := 1; i < nLen; i++ {
    	// 若前一个已经是0,那么就走不到当前下标,返回false
        if dp[i - 1] == 0 {
            return false
        }
        // 记录当前能走的最大步数
        dp[i] = max(dp[i - 1] - 1, nums[i])
    }
    return true
}

1

举报

相关推荐

0 条评论