【发布时间】:2019-04-20 06:24:36
【问题描述】:
我试图找出数组中总和等于的最小元素 给定的输入。我尝试了几个输入总和,但只能找到一个 在第一种情况下配对,而我需要实现的不仅仅是一对。
var arr = [10, 0, -1, 20, 25, 30];
var sum = 45;
var newArr = [];
console.log('before sorting = ' + arr);
arr.sort(function(a, b) {
return a - b;
});
console.log('after sorting = ' + arr);
var l = 0;
var arrSize = arr.length - 1;
while (l < arrSize) {
if (arr[l] + arr[arrSize] === sum) {
var result = newArr.concat(arr[l], arr[arrSize]);
console.log(result);
break;
} else if (arr[l] + arr[arrSize] > sum) {
arrSize--;
} else {
l++;
}
}
输入数组:[10, 0, -1, 20, 25, 30]
所需总和:45
输出:[20, 25]
我正在努力
所需总和:59
输出:[10, -1, 20, 30]
【问题讨论】:
-
这是一个Subset sum problem。您可以搜索“子集和问题 javascript”。有很多实现,例如:Return all subsets whose sum is a given value (subset sum problem) 和 Get the sum of array items that are equal to the target (Subset sum)
标签: javascript arrays sorting