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;
    }
}
相关推荐
Sheep Shaun2 分钟前
C++11核心特性详解:从右值引用到现代C++编程
开发语言·数据结构·c++·算法
云深麋鹿17 分钟前
三.栈和队列
开发语言·数据结构·c++·算法
爆打维c23 分钟前
01BFS算法(例题:网格传送门旅游)
c语言·c++·python·算法·leetcode·广度优先
像素猎人30 分钟前
力扣:面试题16.01.交换数字
c++·算法·leetcode·面试
小O的算法实验室30 分钟前
2024年ASOC SCI2区TOP,异构 pbest 引导的综合学习粒子群算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Python_Study202534 分钟前
工程材料企业如何通过智慧获客软件破解市场困局:方法论、架构与实践
大数据·网络·数据结构·人工智能·架构
AI科技星1 小时前
从质能关系到时空几何:光速飞行理论的框架对比与逻辑验证
服务器·人工智能·线性代数·算法·矩阵
CSDN_RTKLIB1 小时前
C++仿函数
c++·算法·stl
学嵌入式的小杨同学1 小时前
【嵌入式 C 语言高频考点】周测 + 期中真题解析:从基础语法到编程实战
c语言·数据结构·数据库·vscode·算法·面试
沉默-_-1 小时前
力扣hot100双指针专题解析2(C++)
java·c++·算法·蓝桥杯·双指针