当前位置:网站首页>LeetCode_494_目标和
LeetCode_494_目标和
2022-07-29 14:00:00 【Fitz1318】
题目链接
题目描述
给你一个整数数组 nums 和一个整数 target 。
向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :
例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。
返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。
示例 1:
输入:nums = [1,1,1,1,1], target = 3
输出:5
解释:一共有 5 种方法让最终目标和为 3 。
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3
示例 2:
输入:nums = [1], target = 1
输出:1
提示:
1 <= nums.length <= 200 <= nums[i] <= 10000 <= sum(nums[i]) <= 1000-1000 <= target <= 1000
解题思路
动态规划
- 将这些数分为两堆,+号为left,-号为right。然后相加和为
target,也就是left + right = target - 此外
left - right = sum,可以得到left = (sum + target) / 2 - 对于一个固定数组来说,
sum和target都是确定的,所以left可以求出来,此时问题就转换为在集合nums中找出和为left的组合,也就是装满容量为left的背包有几种方法
动态规划五部曲
- 确定
dp数组以及下标的含义dp[j]:装满j容量的背包,有dp[j]种方法
- 确定递推公式
- 在不考虑
nums[i]的情况下,装满容量为j - nums[i]的背包,有dp[j- nums[i]]种方法 - 因此
dp[j] += dp[j - nums[i]]
- 在不考虑
dp数组初始化dp[0] = 1,也就是装满容量为0的背包,有1种方法:就是装0个东西
- 确定遍历顺序
- 01背包问题种,
nums放在外循环,且是正序。target放在内循环,且为倒序
- 01背包问题种,
AC代码
class Solution {
public int findTargetSumWays(int[] nums, int target) {
int sum = 0;
for (int i : nums) {
sum += i;
}
if ((target + sum) % 2 != 0) {
return 0;
}
int bagWeight = (sum + target) / 2;
if (bagWeight < 0) {
bagWeight = -bagWeight;
}
int[] dp = new int[bagWeight + 1];
dp[0] = 1;
for (int i = 0; i < nums.length; i++) {
for (int j = bagWeight; j >= nums[i]; j--) {
dp[j] += dp[j - nums[i]];
}
}
return dp[bagWeight];
}
}
边栏推荐
- 进程间通信 --- system V三种通信方式(图文案例讲解)
- 何为擦除机制,泛型的上界?
- rosbag数据画图MATLAB
- How to return all prime factors of a number?
- Violence recursion to dynamic programming 02 (very clever game of CARDS)
- 少儿编程 电子学会图形化编程等级考试Scratch二级真题解析(选择题)2022年6月
- 题目 1125: C语言训练-委派任务*
- 打卡广汽本田喜悦安全驾驶中心,体验最刁钻的场地训练
- PAT serie a A1021 Deepest Root
- About inner classes
猜你喜欢

【JS高级】js之闭包对象_04

力扣541. 反转字符串 II ----双指针解法

何为擦除机制,泛型的上界?
![验证二叉树的前序序列化[抽象前序遍历]](/img/14/461409ce34369db69e569215f91880.png)
验证二叉树的前序序列化[抽象前序遍历]

EA&UML日拱一卒-活动图::Variable Actions(续)

The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!

web会话管理与xss攻击

企业需要知道的5个 IAM 最佳实践

中国互联网科技企业群狼围攻,谷歌终于遭受重挫导致利润大跌,它为推动鸿蒙的发展而后悔...

kubernetes cks strace etcd
随机推荐
全面质量管理理论
84.(cesium之家)cesium模型在地形上运动
479-82(54、11)
StarRocks 2.3 新版本特性介绍
性能优化竟白屏,难道真是我的锅?
kubernetes cks strace etcd
TCP和UDP的基本认识
Nacos基础教程
About inner classes
【论文阅读】异常检测的视频通过Self-Supervised和多任务学习
基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
根据msql表的结构自动生成gorm的struct
The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
The 10,000-character long article reveals the secrets of Huawei's data governance system!
C#线程操作UI控件
面试官:生产环境中 CPU 利用率飙高怎么办?
手摸手写一个互联网黑话生成器
R Error in :missing values are not allowed in subscripted assignments of data frames
trivy如何从非关系型数据库查询数据
web会话管理与xss攻击