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];
    }
};
相关推荐
321.。15 分钟前
深入理解 Linux 线程封装:从 pthread 到 C++ 面向对象实现
linux·开发语言·c++
EmbedLinX19 分钟前
Linux内核之文件系统:从VFS到实际存储的运作机制
linux·服务器·c语言·c++
客卿12329 分钟前
力扣二叉树简单题整理--(包含常用语法的讲解)
算法·leetcode·职场和发展
We་ct34 分钟前
LeetCode 28. 找出字符串中第一个匹配项的下标:两种实现与深度解析
前端·算法·leetcode·typescript
血小板要健康41 分钟前
118. 杨辉三角,力扣
算法·leetcode·职场和发展
_OP_CHEN44 分钟前
【算法基础篇】(五十一)组合数学入门:核心概念 + 4 种求组合数方法,带你快速熟悉组合问题!
c++·算法·蓝桥杯·排列组合·组合数学·组合数·acm/icpc
漫随流水1 小时前
leetcode回溯算法(491.非递减子序列)
数据结构·算法·leetcode·回溯算法
陳10301 小时前
C++:二叉搜索树
开发语言·数据结构·c++
楼田莉子1 小时前
Linux进程间通信——管道
linux·运维·服务器·c++·学习
YuTaoShao1 小时前
【LeetCode 每日一题】1984. 学生分数的最小差值
算法·leetcode·排序算法