代码随想录494.目标和

题目
给你一个非负整数数组 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

解题思路
本题可转化为01背包问题,用dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法。求组合问题有如下表达式dp[j] += dp[j - nums[i]]。

代码实现
class Solution {
public:
int findTargetSumWays(vector& nums, int S) {
int sum = 0;
for (int i = 0; i < nums.size(); i++) sum += nums[i];
if (abs(S) > sum) return 0; // 此时没有方案
if ((S + sum) % 2 == 1) return 0; // 此时没有方案
int bagSize = (S + sum) / 2;
vector dp(bagSize + 1, 0);
dp[0] = 1;
for (int i = 0; i < nums.size(); i++) {
for (int j = bagSize; j >= nums[i]; j–) {
dp[j] += dp[j - nums[i]];
}
}
return dp[bagSize];
}
};

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 07:56:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 07:56:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 07:56:03       87 阅读
  4. Python语言-面向对象

    2023-12-15 07:56:03       96 阅读

热门阅读

  1. 模拟I2C通信

    2023-12-15 07:56:03       53 阅读
  2. npm 和 pip 、cnpm、Yum分别是什么

    2023-12-15 07:56:03       71 阅读
  3. Crow:基于req.rul查找路由Rule对象及匹配参数

    2023-12-15 07:56:03       63 阅读
  4. Android Studio(Flutter)常用快捷键

    2023-12-15 07:56:03       50 阅读
  5. GitHub 深度解析:高级功能和最佳实践

    2023-12-15 07:56:03       56 阅读
  6. uniapp使用u-search以及相关api

    2023-12-15 07:56:03       56 阅读
  7. docker容器引擎

    2023-12-15 07:56:03       45 阅读
  8. KVO(键值观察)

    2023-12-15 07:56:03       69 阅读
  9. Visual Studio(VS)常用快捷键(最详细)

    2023-12-15 07:56:03       47 阅读
  10. C语言—每日选择题—Day48

    2023-12-15 07:56:03       54 阅读
  11. 【C++】实现一个数组均分函数

    2023-12-15 07:56:03       60 阅读
  12. 14.Spring2.7.x 整合 Elasticsearch7.17

    2023-12-15 07:56:03       50 阅读
  13. 【云原生kubernets】存储管理与应用

    2023-12-15 07:56:03       67 阅读