代码随想录 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];
    }
};
相关推荐
圣保罗的大教堂20 分钟前
leetcode 1161. 最大层内元素和 中等
leetcode
闲看云起23 分钟前
LeetCode-day6:接雨水
算法·leetcode·职场和发展
没学上了36 分钟前
VLM_一维离散卷积与二维离散卷积(还是复习感觉还行)
算法
HL_风神1 小时前
设计原则之迪米特
c++·学习·设计模式
黛色正浓1 小时前
leetCode-热题100-贪心合集(JavaScript)
javascript·算法·leetcode
HL_风神1 小时前
设计原则之合成复用
c++·学习·设计模式
轻微的风格艾丝凡1 小时前
嵌入式定时器计时技巧:用有符号数省略溢出判断的底层逻辑与实践
数据库·算法·dsp开发·嵌入式软件
No0d1es1 小时前
2025年12月 GESP CCF编程能力等级认证C++四级真题
算法·青少年编程·等级考试·gesp·ccf
汉克老师1 小时前
GESP2025年12月认证C++八级真题与解析(单选题10-12)
c++·递归··gesp八级·gesp8级
CodeByV1 小时前
【算法题】快排
算法