本文主要是介绍代码随想录算法训练营第三十九天| 416. 分割等和子集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
416. 分割等和子集 - 力扣(LeetCode)
class Solution {public boolean canPartition(int[] nums) {int sum = 0;for (int i=0;i<nums.length;i++){sum += nums[i];}if(sum%2!=0){return false;}int weight = sum /2;// int[][] dp = new int[nums.length][weight+1];// for(int i=0;i<=weight;i++){// if(i >= nums[0]){// dp[0][i] = nums[0];// }// }// for(int i=1;i<nums.length;i++){// for (int j=1;j<=weight;j++){// if(j > nums[i]){// dp[i][j] = Math.max(dp[i-1][j],dp[i-1][j-nums[i]] + nums[i]);// }else{// dp[i][j] = dp[i-1][j];// }// }// }// return dp[nums.length-1][weight] == weight;int[] dp = new int[weight+1];for(int j=0;j<=weight;j++){if(j >= nums[0]){dp[j] = nums[0];}}for(int i=1;i<nums.length;i++){for(int j=weight;j>=nums[i];j--){dp[j] = Math.max(dp[j],dp[j-nums[i]]+nums[i]);}}return dp[weight] == weight;}
}
这篇关于代码随想录算法训练营第三十九天| 416. 分割等和子集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!