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];
    }
};
相关推荐
ShineWinsu11 小时前
对于Redis:List类型的解析
数据库·c++·redis·链表·缓存·面试·list
Dream it possible!12 小时前
LeetCode_热题100_知识点总结
算法·leetcode·职场和发展
小师兄吃牛肉12 小时前
C++ 与 Lua 的协程交互:从原理到实战
c++·lua·交互
YYYing.13 小时前
【设计模式系列 (八) 】组合模式
c++·后端·设计模式·组合模式·c/c++
艾莉丝努力练剑13 小时前
【QT】系统相关:多线程QThread基础
开发语言·网络·c++·qt·学习·大模型
l1t13 小时前
DeepSeek总结的PIVCO-Huffman编码性能优化
数据结构·c++·算法
王维同学13 小时前
ETW监控-KswordARK功能展示
c++·windows·安全
東隅已逝,桑榆非晚13 小时前
c++模板进阶
开发语言·c++·笔记·学习
左手の明天1 天前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++