饭宝 发表于 2025-1-20 18:54:02

leetcode416.分割等和子集

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相当。
示例 1:
<strong>输入:</strong>nums =
<strong>输出:</strong>true
<strong>解释:</strong>数组可以分割成 和 。 示例 2:
<strong>输入:</strong>nums =
<strong>输出:</strong>false
<strong>解释:</strong>数组不能分割成两个元素和相等的子集。

提示:


[*]1 <= nums.length <= 200
[*]1 <= nums <= 100
思路:类似leetcode139.单词拆分-CSDN博客,假如数组和为奇数,则一定无法分割;假如为偶数,则转换为背包是否能装满题目,dp表示容量j是否能凑成
public boolean canPartition(int[] nums) {
      int sum=0;
      for(int i=0;i<nums.length;i++)
            sum+=nums;
      // 如果是奇数,一定无法分割
      if(sum%2!=0)
            return false;
      // 如果是偶数,则转换为背包是否能装满问题,dp表示容量j是否能凑成
      boolean [] dp=new boolean;
      dp=true;
      for(int i=0;i<nums.length;i++){
            //为保证每个物品用一次,从后往前遍历背包!!
            for(int j=dp.length-1;j>=0;j--){
                if(dp&&j+nums<dp.length){
                  dp]=true;
                  if(j+nums==dp.length-1)
                        return true;
                }
            }
      }
      return false;
    }

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: leetcode416.分割等和子集