代码随想录 Leetcode494. 目标和

题目:


代码(首刷看解析 2024年2月26日)

思路:根据题意,设两个背包,packageA存放前面是"+"的数字之和,packageB存放前面是"-"的数字之和

则sum = packageA + packageB;

target = packageA - packageB;

则根据以上算式可得packageA = (sum + target)/2;

因为sum和target根据题目都已知,则问题变成求可以放哪些数使得和 == packageA--即动态规划01背包问题

cpp 复制代码
class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        int sum = 0;
        for (int& num :nums) {
            sum += num;
        }
        if (sum < abs(target)) return 0; 
        int tmp = sum + target;
        if (tmp % 2 == 1) return 0;
        int x = tmp / 2;
        vector<int> dp(x + 1, 0);
        dp[0] = 1;
        for (int i = 0; i < nums.size(); ++i) {
            for (int j = x; j >= nums[i]; --j) {
                dp[j] += dp[j - nums[i]];
            }
        }
        return dp[x];
    }
};
相关推荐
Dageno_AI13 小时前
ChatGPT 不再引用 Reddit 之后,还值得在 Reddit 上做 AI 可见度吗?
算法
沫璃染墨13 小时前
《Qt从零入门系列(十五):Qt线程安全与锁机制详解——从QMutex到RAII与读写锁实战》
开发语言·c++·qt·安全·交互·线程·qt6.3
hetao173383713 小时前
2026-10-25 hetao1733837 的刷题记录
c++·算法
Jsundoku14 小时前
第七章 机器学习 -- 其他经典算法
人工智能·算法·机器学习
fqbqrr14 小时前
2610C++,UI复合技术在窗口中绘画字体图标
c++·ui
进击的丸子14 小时前
基于 ArcFace SDK 的跨平台人脸特征值下发、同步以及存储方案
后端·算法·代码规范
见叶之秋14 小时前
【C++】红与黑的边界:红黑树从插入到自检
数据结构·c++·算法·面试
程序猿编码14 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
kiracrimson15 小时前
string 容器:从 C 字符串到会自己扩容的类
开发语言·数据结构·c++·stl
程序猿编码15 小时前
纯 C++ 手写 LLM 推理引擎:分页 KV 缓存、连续批、多卡张量并行全部内置
c++·深度学习·缓存·大模型推理·自动微分·模型推理