C++ | Leetcode C++题解之第416题分割等和子集

题目:

题解:

cpp 复制代码
class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int n = nums.size();
        if (n < 2) {
            return false;
        }
        int sum = 0, maxNum = 0;
        for (auto& num : nums) {
            sum += num;
            maxNum = max(maxNum, num);
        }
        if (sum & 1) {
            return false;
        }
        int target = sum / 2;
        if (maxNum > target) {
            return false;
        }
        vector<int> dp(target + 1, 0);
        dp[0] = true;
        for (int i = 0; i < n; i++) {
            int num = nums[i];
            for (int j = target; j >= num; --j) {
                dp[j] |= dp[j - num];
            }
        }
        return dp[target];
    }
};
相关推荐
紫陌涵光几秒前
701. 二叉搜索树中的插入操作
算法·leetcode
tankeven2 分钟前
HJ100 等差数列
c++·算法
waves浪游3 分钟前
库制作与原理(上)
linux·运维·服务器·开发语言·c++
ADDDDDD_Trouvaille3 分钟前
2026.2.22——OJ98-100题
c++·算法
闻缺陷则喜何志丹7 分钟前
【差分数组】P9166 [省选联考 2023] 火车站|普及+
数据结构·c++·洛谷·差分数组
tankeven8 分钟前
HJ99 自守数
c++·算法
菜鸡儿齐19 分钟前
leetcode-分割回文串
算法·leetcode·职场和发展
菜鸡儿齐25 分钟前
leetcode-组合总和
算法·leetcode·深度优先
滴滴答滴答答27 分钟前
LeetCode Hot100 之 19 接雨水
算法·leetcode·职场和发展
样例过了就是过了32 分钟前
LeetCode热题100 反转链表
数据结构·算法·leetcode·链表