C语言 | Leetcode C语言题解之第416题分割等和子集

题目:

题解:

cpp 复制代码
bool canPartition(int* nums, int numsSize) {
    if (numsSize < 2) {
        return false;
    }
    int sum = 0, maxNum = 0;
    for (int i = 0; i < numsSize; ++i) {
        sum += nums[i];
        maxNum = fmax(maxNum, nums[i]);
    }
    if (sum & 1) {
        return false;
    }
    int target = sum / 2;
    if (maxNum > target) {
        return false;
    }
    int dp[target + 1];
    memset(dp, 0, sizeof(dp));
    dp[0] = true;
    for (int i = 0; i < numsSize; i++) {
        int num = nums[i];
        for (int j = target; j >= num; --j) {
            dp[j] |= dp[j - num];
        }
    }
    return dp[target];
}
相关推荐
勇闯逆流河6 小时前
【数据结构】堆
c语言·数据结构·算法
飞川撸码7 小时前
【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)
算法·leetcode·golang
jz_ddk10 小时前
[学习] RTKLib详解:rtcm2.c、rtcm3.c、rtcm3e与rtcmn.c
c语言·学习·算法
darkchink10 小时前
[LevelDB]LevelDB版本管理的黑魔法-为什么能在不锁表的情况下管理数据?
c语言·数据库·c++·oracle·数据库开发·dba·db
小学生的信奥之路10 小时前
力扣1991:找到数组的中间位置(前缀和)
数据结构·算法·leetcode·前缀和·数组
ha204289419410 小时前
c++学习之--- list
c语言·c++·学习·list
এ᭄画画的北北10 小时前
力扣-102.二叉树的层序遍历
数据结构·算法·leetcode
JeffersonZU12 小时前
【数据结构】1-4算法的空间复杂度
c语言·数据结构·算法
瓦力wow16 小时前
c语言 写一个五子棋
c语言·c++·算法
hjjdebug17 小时前
c/c++数据类型转换.
c语言·c++·数据类型变换