当前位置:首页 > 编程笔记 > 正文
已解决

LCR 101.分割等和子集

来自网友在路上 153853提问 提问时间:2023-10-05 20:51:55阅读次数: 53

最佳答案 问答题库538位专家为你答疑解惑

​​题目来源:

        leetcode题目,网址:LCR 101. 分割等和子集 - 力扣(LeetCode)

解题思路:

        将数组分为等和的两部分等价于数组是否中存在部分元素和为数组总和的一半。

        首先,若数组长度为 1 或数组总和为奇数,肯定不存在部分元素和为数组总和的一半。

        接着,对数组进行动态规划,其中 dp[i][j] 表示前 i 个元素是否能使部分元素和为 j ,递推关系为 dp[i][j]=dp[i-1][j] || dp[i-1][j-nums[i]]。

        最后返回结果即可。

解题代码:

class Solution {public boolean canPartition(int[] nums) {int sum=Arrays.stream(nums).sum();if(nums.length==1 || sum%2!=0){return false;}int target=sum/2;boolean[][] dp=new boolean[nums.length][target+1];//dp[i][j] 0-i 范围内是否能通过求和得到 jfor(int i=0;i<dp.length;i++){dp[i][0]=true;}for(int i=1;i<dp.length;i++){for(int j=0;j<dp[0].length;j++){dp[i][j]=dp[i-1][j];if(!dp[i][j] && j-nums[i]>=0){dp[i][j]=dp[i-1][j-nums[i]];}}if(dp[i][target]){return true;}}return dp[nums.length-1][target];}
}

总结:

        没做出来,看官方题解的。

        这题是简单题,但是主站中与本题相同的题是中等题,搞不懂。


查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"LCR 101.分割等和子集":http://eshow365.cn/6-15969-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!