024_跳跃游戏

知识点:贪心思想

LeetCode第五十三题:https://leetcode-cn.com/problems/jump-game/submissions/

语言:GoLang

// 贪心
func canJump(nums []int) bool {
    length := len(nums)

    distance := 0
    for i := 0; i < length; i++ {
        if distance < i {
            return false
        }

        distance = max(distance, i + nums[i])
        
        if distance >= length {
            return true
        }
    }
    return true
}

func max(a int, b int) int {
    if a > b {
        return a
    }
    return b
}


// 暴力版,俗称超时版,时间复杂度是:O(NK),N为元素个数,K为元素的最大值。。。
func canJump_(nums []int) bool {
    if len(nums) == 0 {
        return true
    }
    if len(nums) == 1 && nums[0] == 0 {
        return true
    }

    return dfs(nums, 0)
}

func dfs(nums []int, current int) bool {    
    ans := false
    for i := nums[current]; i >= 1; i-- {
        if current + i >= len(nums) - 1 {
            return true
        }

        ans = ans || dfs(nums, current + i)
    }

    return ans
}
posted @ 2020-03-19 19:58  Cenyol  阅读(66)  评论(0)    收藏  举报