Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-12-27 22:44:10
494. Target Sum
思路
看是要用backtracking还是用dp也可以
dp:
建立两个map:map1、map2
map的key会是目前得到过的数字
value是得到过key的次数
map[i]=j
表示目前的到过j次i
首先设map1[0]=1
接着每次都去遍历map1,并且令
map2[key-nums[i]]+=j 、 map2[key+nums[i]]+=j
最后回传map1[target]就好
golang code :
func findTargetSumWays(nums []int, target int) int {
dp1 := make(map[int]int)
dp2 := make(map[int]int)
dp1[0] = 1
for i := 0; i < len(nums); i++ {
for key, val := range dp1 {
dp2[key-nums[i]] += val
dp2[key+nums[i]] += val
}
dp1 = dp2
dp2 = make(map[int]int)
}
return dp1[target]
}

Links booklink

Contact Us: admin [ a t ] ucptt.com