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];
    }
};
相关推荐
会叫的恐龙2 小时前
C++ 核心知识点汇总(第11日)(排序算法)
c++·算法·排序算法
符哥20082 小时前
C++ 适合初学者的学习笔记整理
c++·笔记·学习
星火开发设计3 小时前
this 指针:指向对象自身的隐含指针
开发语言·数据结构·c++·学习·指针·知识
梵刹古音3 小时前
【C++】构造函数
开发语言·c++
Ronin3053 小时前
持久化数据管理中心模块
开发语言·c++·rabbitmq·gtest
sycmancia3 小时前
C++——强制类型转化、const的理解
开发语言·c++
我在人间贩卖青春3 小时前
C++之面向对象编程多文件文件示例
c++
燃于AC之乐3 小时前
深入解剖STL deque:从源码剖析到容器适配器实现
开发语言·c++·stl·源码剖析·容器实现
MSTcheng.3 小时前
【C++】C++异常
java·数据库·c++·异常
草莓熊Lotso4 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能