跳跃游戏

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

解题思路:从后往前,数组的倒数第二个元素(l-1)开始,如果能够到达最后一个元素(l)就截断,然后剩下的数组重复此过程。可以预知:如果能够到达最后一个位置,那么整个数组一定能够截取完,即最后l=0,时间复杂度O(n)。

func canJump(nums []int) bool {
    var l = len(nums) - 1
    for i := l-1; i >= 0; i-- {
        if nums[i]+i >= l {
            l = i
        }
    }
    return l == 0
}

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读