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];
    }
};
相关推荐
sin_hielo13 小时前
leetcode 3578
数据结构·算法·leetcode
前端小白在前进14 小时前
力扣刷题:无重复字符的最长子串
算法·leetcode·职场和发展
fish_xk14 小时前
c++基础扩展
开发语言·c++
阿沁QWQ14 小时前
C++继承
开发语言·c++
啊吧怪不啊吧14 小时前
C++之基于正倒排索引的Boost搜索引擎项目searcher部分代码及详解
c++·搜索引擎·项目
无限进步_14 小时前
C语言实现贪吃蛇游戏详解
c语言·开发语言·数据结构·c++·后端·算法·游戏
CHANG_THE_WORLD14 小时前
C++ vs Python 参数传递方式对比
java·c++·python
ULTRA??15 小时前
C++实现右折叠
开发语言·c++
handsomezqh15 小时前
洛谷U611548 助教的比拼
c++·算法
小李小李快乐不已15 小时前
图论理论基础(4)
c++·算法·图论·迭代加深