LeetCode 416-分割等和子集

  1. 分割等和子集
    给你一个 只包含正整数 的 非空 数组 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[i] <= 100

java 复制代码
class Solution {
    public boolean canPartition(int[] nums) {
        int sum = 0;
        for (int n : nums) {
            sum += n;
        }
        if(sum%2==1){
            return false;
        }
        int target = sum / 2;
        int len = nums.length;
        int[][] dp = new int[len+1][target+1];

        for(int i = 1;i<=len;i++){
            for(int j = 1;j<=target;j++){
                if(j>=nums[i-1]){
                    dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-nums[i-1]]+nums[i-1]);
                }else{
                    dp[i][j] = dp[i-1][j];
                }
            }
        }
        System.out.println(dp[len][target]);
        if(dp[len][target]==target) return true;
        else return false;
    }
}
相关推荐
野草y2 分钟前
数据结构(3.2)——栈的顺序存储实现
数据结构
yannan201903131 小时前
【算法】(C语言):二分查找
c语言·算法
zhangbin_2371 小时前
【Python机器学习】处理文本数据——将文本数据表示为词袋
人工智能·python·算法·机器学习·分类
孑渡1 小时前
【LeetCode】每日一题:跳跃游戏
python·算法·leetcode·游戏·职场和发展
liulanba1 小时前
leetcode--二叉树中的最长交错路径
linux·算法·leetcode
Puppet__1 小时前
【康复学习--LeetCode每日一题】3115. 质数的最大距离
学习·算法·leetcode
dc爱傲雪和技术1 小时前
卡尔曼滤波Q和R怎么调
python·算法·r语言
Neituijunsir2 小时前
2024.06.28 校招 实习 内推 面经
c++·python·算法·面试·自动驾驶·汽车·求职招聘
xw-pp2 小时前
回溯法的小结与概述
java·数据结构·c++·python·算法·递归
每天努力进步!2 小时前
LeetCode热题100刷题6:160. 相交链表、206. 反转链表、234. 回文链表、141. 环形链表、142. 环形链表 II
c++·算法·leetcode·链表