gpt4 book ai didi

javascript - 找到和等于数字的所有子数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:51 27 4
gpt4 key购买 nike

你能告诉我如何找到和等于数字的所有子数组吗示例

arr[] = [2, 4, 45, 6, 0, 19]
x = 51
Output: [2,4,45]

或者

arr[] = [1, 11, 100, 1, 0, 200, 3, 2, 1, 280]
x = 280
Output: [280]

我这样试过,但没有得到正确的输出

function getSubArray(arr, num) {
var sum = 0,
blank = [];
var bigArr = []
for (var i = 0; i < arr.length; i++) {
sum = arr[i];
if (blank.length === 0) {
blank.push(arr[i]);
}
for (var j = 1; i < arr.length; j++) {
sum += arr[j];
if (sum < num) {
blank.push(arr[j])
} else if (sum > num) {
sum = 0;
blank = [];
break;
} else {
blank.push(arr[j])
bigArr.push(blank);
sum = 0;
blank = [];
}
}
}

return bigArr
}

console.log(getSubArray([1, 3, 6, 11, 1, 5, 4], 4));

对于这个预期的输出是

console.log(getSubArray([1, 3, 6, 11, 1, 5,4],4));

output: [1,3]
[4]

预期输出[[1,3], [4]] 是我的预期输出

最佳答案

您可以迭代数组并获取下一个元素,或者如果在省略该元素之前没有获取任何元素。

function getSubset(array, sum) {
function iter(temp, delta, index) {
if (!delta) result.push(temp);
if (index >= array.length) return;
iter(temp.concat(array[index]), delta - array[index], index + 1);
if (!temp.length) iter(temp, delta, index + 1);
}

var result = [];
iter([], sum, 0);
return result;
}

console.log(getSubset([2, 4, 45, 6, 0, 19], 51)); // [2, 4, 45], [45, 6], [45, 6, 0]
console.log(getSubset([1, 11, 100, 1, 0, 200, 3, 2, 1, 280], 280)); // [280]
console.log(getSubset([1, 3, 6, 11, 1, 5, 4], 4)); // [1, 3], [4]

关于javascript - 找到和等于数字的所有子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com