繁体   English   中英

NSum 的所有可能组合

[英]all possible combination for NSum

有一个包含N个元素的数组,并且想对K个元素求和以获得最接近targetsum

对于 3Sum,有解决方案

public int threeSumClosest(int[] nums, int target) {
    int min = Integer.MAX_VALUE;
    int result = 0;
 
    Arrays.sort(nums);
 
    for (int i = 0; i < nums.length; i++) {
        int j = i + 1;
        int k = nums.length - 1;
        while (j < k) {
            int sum = nums[i] + nums[j] + nums[k];
            int diff = Math.abs(sum - target);
 
            if(diff == 0) return sum;
 
            if (diff < min) {
                min = diff;
                result = sum;
            }
            if (sum <= target) {
                j++;
            } else {
                k--;
            }
        }
    }
 
    return result;
}

但是有什么办法可以使用 NSum 的通用解决方案,这样我就可以根据number of elements required to be sum to get closest value to target

制作大小为A[K+1][Sum+1]的二维数组

N个值创建一个循环。

对于值V遍历数组A 如果k<K A[k][s]>0A[k+1][s+V]==0 ,则将 V 放入第二个单元格。 这表示 sum s+V可能由k+1元素组成,其中V作为最后一个元素。

毕竟检查A[K][sum]和第 K 行中最接近的单元格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM