逐日一题-leetcode 416. 分割等和子集

分享
源码 2024-9-2 17:05:10 130 0 来自 中国
给你一个 只包罗正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相称。
示例 1:
输入:nums = [1,5,11,5]
输出:true
解释:数组可以分割成 [1, 5, 5] 和 [11] 。
示例 2:
输入:nums = [1,2,3,5]
输出:false
解释:数组不能分割成两个元素和相称的子集。
提示:
1 <= nums.length <= 200
1 <= nums <= 100
java代码:

class Solution {    public boolean canPartition(int[] nums) {        int n = nums.length;        if (n < 2) {            return false;        }        int sum = 0, maxNum = 0;        for (int num : nums) {            sum += num;            maxNum = Math.max(maxNum, num);        }        if (sum % 2 != 0) {            return false;        }        int target = sum / 2;        if (maxNum > target) {            return false;        }        boolean[][] dp = new boolean[n][target + 1];        for (int i = 0; i < n; i++) {            dp[0] = true;        }        dp[0][nums[0]] = true;        for (int i = 1; i < n; i++) {            int num = nums;            for (int j = 1; j <= target; j++) {                if (j >= num) {                    dp[j] = dp[i - 1][j] | dp[i - 1][j - num];                } else {                    dp[j] = dp[i - 1][j];                }            }        }        return dp[n - 1][target];    }}
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-12-23 00:53, Processed in 0.156677 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表