package com.daily.daily20210129;
import java.util.Arrays;
/**
* @Project: dailyCode
* @Site: http://www.zhao1iang.club/
* @Copyright: ©CodeLamp
* @Author: zhaoliang
* @Create: 2021-01-29 14:44
* @Desc: 分割等和子集
**/
public class canPartition {
//给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
//注意:
//每个数组中的元素不会超过 100
//数组的大小不会超过 200
public boolean canPartition(int[] nums){
int sum = Arrays.stream(nums).sum();
if(sum % 2 !=0)return false;
int W = sum/2;
boolean[] dp = new boolean[W+1];
dp[0] = true;
for (int num:nums
) {
for (int i = W; i >=num ; i--) {
dp[i] = dp[i] || dp[i-num];
}
}
return dp[W];
}
}
日常刷题-分割等和子集
最新推荐文章于 2024-04-26 21:29:50 发布