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];
    }
};
相关推荐
70asunflower12 分钟前
CUDA编程指南基础知识点总结(5)
c++·人工智能·cuda
Eward-an14 分钟前
LeetCode 1980 题通关指南|3种解法拆解“找唯一未出现二进制串”问题,附Python最优解实现
python·算法·leetcode
程序员酥皮蛋44 分钟前
hot 100 第四十题 40.二叉树的层序遍历
数据结构·算法·leetcode
We་ct3 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
mjhcsp3 小时前
C++剪枝解析
c++·剪枝
wregjru3 小时前
【网络】5.HTTP 协议详解与实现
c++
努力学算法的蒟蒻3 小时前
day105(3.6)——leetcode面试经典150
算法·leetcode·面试
Ralph_Y3 小时前
正则表达式
开发语言·c++·正则表达式
钓鱼的肝3 小时前
[GESP-4.2503.T2]二阶矩阵
c++·算法·矩阵
小小unicorn3 小时前
[微服务即时通讯系统]文件存储子服务的实现与测试
c++·redis·微服务·云原生·架构