day43 动态规划part5 代码随想录算法训练营 494. 目标和
题目:494. 目标和
我的感悟:
- 加油!
理解难点:
- dp的几种方法的应用
- 记住
dp[j] += dp[j-nums[i]]
听课笔记:
代码示例:
class Solution:
def findTargetSumWays(self, nums: List[int], target: int) -> int:
total_sum = sum(nums)
if abs(target) > total_sum:
return 0
if (sum(nums) + target) % 2 ==1:
return 0
left = (sum(nums) + target)//2 # 目标值 测试为4
# 初始化
dp = [0] * (left+1)
dp[0] = 1 #
for i in range(len(nums)):
for j in range(left,nums[i]-1,-1):
dp[j] += dp[j-nums[i]]
return dp[left]
通过截图:
扩展写法:
- 这里可以用回溯
资料:
- 目标和
大家重点理解 递推公式:dp[j] += dp[j - nums[i]],这个公式后面的提问 我们还会用到。
视频讲解:https://www.bilibili.com/video/BV1o8411j73x
https://programmercarl.com/0494.%E7%9B%AE%E6%A0%87%E5%92%8C.html