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];
    }
};
相关推荐
Pcr_C5 分钟前
Qt事件循环深度解析与实战指南
开发语言·c++·qt·开源
汉克老师6 分钟前
GESP2025年12月认证C++一级真题与解析(编程题2(手机电量显示))
c++·while循环·多分支结构
闻缺陷则喜何志丹21 分钟前
计算几何汇总
c++·数学·计算几何·凸多边形·简单多边形
C++ 老炮儿的技术栈22 分钟前
时序数据库 相对于关系型数据库,有什么区别
c语言·开发语言·c++·机器人·时序数据库·visual studio
hetao173383726 分钟前
2025-12-30 hetao1733837 的刷题笔记
c++·笔记·算法
小此方29 分钟前
Re: ゼロから学ぶ C++ 入門(九)类和对象·最终篇上:缓冲区同步与流绑定、取地址运算符重载、const成员函数、初始化列表
开发语言·c++·底层
小袁顶风作案30 分钟前
leetcode力扣——27.移除元素、26.删除有序数组的重复项、80.删除有序数组中的重复项 II
数据结构·算法·leetcode
k***92161 小时前
C语言模拟面向对象三大特性与C++实现对比
java·c语言·c++
咔咔咔的1 小时前
1351. 统计有序矩阵中的负数
c++
挖矿大亨1 小时前
c++中的函数调用运算符重载
前端·c++·算法