| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | package mainfunc canJumpIter(nums []int, visited map[int]bool, pos int) bool {	if visited[pos] {		return false	}	visited[pos] = true	if pos+nums[pos] >= len(nums)-1 {		return true	}	if nums[pos] == 0 {		return false	}	for i := 1; i <= nums[pos]; i++ {		if canJumpIter(nums, visited, pos+i) {			return true		}	}	return false}// TLEfunc canJumpOld(nums []int) bool {	return canJumpIter(nums, map[int]bool{}, 0)}func canJump(nums []int) bool {	// leap: the longest distance of jumping at idx 'i'	for i, leap := 0, 0; i < len(nums); i, leap = i+1, leap-1 {		if leap < 0 {			return false		}		if nums[i] > leap {			leap = nums[i]		}	}	return true}/* func main() {	a1 := []int{2, 3, 1, 1, 4}	a2 := []int{3, 2, 1, 0, 4}	a3 := []int{0}	fmt.Println(canJump(a1))	fmt.Println(canJump(a2))	fmt.Println(canJump(a3))} */
 |