https://leetcode.cn/problems/jump-game-ii/description/?envType=study-plan-v2&envId=top-interview-150
go
package leetcode150 import "testing" func TestJump2(t *testing.T) { nums := []int{5, 9, 3, 2, 1, 0, 2, 3, 3, 1, 0, 0} res := jump3(nums) println(res) } func jump3(nums []int) int { ff := make([]int, len(nums)) for i := len(nums) - 2; i >= 0; i-- { if i+nums[i] >= len(nums)-1 { ff[i] = 1 } else { for j := i + 1; j <= i+nums[i]; j++ { if ff[j] != 0 && (ff[i] == 0 || ff[i] > 1+ff[j]) { ff[i] = 1 + ff[j] } } } } return ff[0] } func jump2(nums []int) int { if len(nums) <= 1 { return 0 } ff := make([]int, len(nums)) return jumpHandler(nums, ff, 0) } func jumpHandler(nums []int, ff []int, pos int) int { if nums[pos] == 0 { return 0 } if ff[pos] > 0 { return ff[pos] } if pos+nums[pos] >= len(nums)-1 { ff[pos] = 1 return ff[pos] } minStep := 0 for i := nums[pos]; i > 0; i-- { s := jumpHandler(nums, ff, pos+i) if minStep == 0 || (minStep > s && s != 0) { minStep = s } } ff[pos] += minStep + 1 return ff[pos] }
标签:150,nums,int,45,pos,len,minStep,II,ff From: https://www.cnblogs.com/MoonBeautiful/p/18359313