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
}