Advertisement

LeetCode上的题目416:Partition Equal Subset Sum(分割等和子集)

阅读量:

【针对这一问题,我们可首先对集合中的元素进行累加运算,从而获得总和 sum,进而将该问题转换为经典的背包问题形式:

设定一个容量为 sum / 2 的背包,并提供 N 个物品,其中每个物品的重量对应于 nums[i]。现要求判断是否存在一种合理的物品装载方式,使得背包能够被完全填满?

复制代码
    Input: [1, 5, 11, 5]
    
    Output: true
    
    Explanation: The array can be partitioned as [1, 5, 5] and [11].
    
    
    
      
      
      
      
      
      
    
复制代码
    public boolean canPartition(int[] nums) {
        int sum = 0;
        for(int num : nums) {
            sum += num;
        }
    
        //若sum为奇数,则一定为false
        if(sum % 2 != 0) return false;
        //背包容量为sum/2
        sum = sum / 2;

全部评论 (0)

还没有任何评论哟~