https://leetcode.cn/problems/jump-game/description/?envType=study-plan-v2&envId=top-interview-150
go
package leetcode150 import "testing" func TestCanJump(t *testing.T) { nums := []int{2, 3, 1, 1, 4} res := canJump(nums) println(res) } func canJump(nums []int) bool { ff := make([]int, len(nums)) return jump(nums, ff, 0) } func jump(nums []int, ff []int, pos int) bool { if ff[pos] == 2 { return false } else if ff[pos] == 1 { return true } if pos+nums[pos] >= len(nums)-1 { ff[pos] = 1 return true } for i := nums[pos]; i > 0; i-- { if jump(nums, ff, pos+i) { return true } } ff[pos] = 2 return false }