畫圖和虛擬碼
覆盤:
可以先不考慮記憶化搜尋 , 註釋掉
這裡有個小錯誤可以原諒
go 的 map 要初始化 , 否則是 nil
邊界沒定義明確(犯了很多次了)
Accepted:
package main
import "fmt"
type Solution struct {
memo map[int]int
len int
nums []int
}
func (t *Solution) rob(n int) int {
// n>len return 0
if n>t.len-1 {
return 0
}
max:=-1
for i:=n;i<=t.len-1;i++{
if _,ok:=t.memo[i+2];ok {
max = maxC(max,t.nums[i]+t.memo[i+2])
continue
}
cur:=t.nums[i]+t.rob(i+2)
max=maxC(max,cur)
}
t.memo[n]=max
return max
}
func rob(nums []int) int {
s:=Solution{memo:make(map[int]int),len:len(nums),nums:nums}
res:=s.rob(0)
return res
}
func maxC(v1 int,v2 int) int {
if v1>v2 {
return v1
}
return v2
}
func p(v interface{}) {
fmt.Println(v)
}
func main() {
//r:=[]int{1,2,3,1}
r:=[]int{6,6,4,8,4,3,3,10}
fmt.Println(rob(r))
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結