[英]all possible combination for NSum
有一个包含N
个元素的数组,并且想对K
个元素求和以获得最接近target
的sum
。
对于 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]>0
和A[k+1][s+V]==0
,则将 V 放入第二个单元格。 这表示 sum s+V
可能由k+1
元素组成,其中V
作为最后一个元素。
毕竟检查A[K][sum]
和第 K 行中最接近的单元格
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.