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];
    }
};
相关推荐
iAkuya5 分钟前
(leetcode)力扣100 58组合总和(回溯)
算法·leetcode·职场和发展
m0_561359677 分钟前
代码热更新技术
开发语言·c++·算法
兩尛13 分钟前
c++知识点1
java·开发语言·c++
冉佳驹21 分钟前
C++11 ——— 列表初始化、移动语义、可变参数模板、lamdba表达式、function包装器和bind包装器
c++·可变参数模板·移动构造·移动赋值·function包装器·bind包装器·lamdba表达式
xu_yule32 分钟前
算法基础—组合数学
c++·算法
爱尔兰极光34 分钟前
LeetCode--移除元素
算法·leetcode·职场和发展
Tansmjs1 小时前
C++中的工厂模式变体
开发语言·c++·算法
naruto_lnq1 小时前
多平台UI框架C++开发
开发语言·c++·算法
爱装代码的小瓶子1 小时前
【C++与Linux基础】文件篇(8)磁盘文件系统:从块、分区到inode与ext2
linux·开发语言·c++
苦藤新鸡1 小时前
51.课程表(拓扑排序)-leetcode207
数据结构·算法·leetcode·bfs