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

标签 javascript

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

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/55296323/

相关文章:

javascript - 如何从html标签中获取前缀名称

javascript - 如何在 select2 单选中触发标签创建(例如,按下相邻按钮时)?

javascript - 在 C++ 服务器中处理使用 WebRTC (Socket.IO) 捕获的视频数据

javascript - 在 Javascript/Jquery 中传递值

c# - 输入的值不是由 JavaScript 设置的(或者是吗?)

javascript - AWS Cognito - 如何自定义输入字段?

javascript - 单击模态 jquery 时禁用隐藏模态窗口

javascript - 如何在生产环境中动态加载多个优化的 requirejs 模块?

javascript - 如何在 Laravel 或 Django 的 Web 应用程序中实现指纹

javascript - 无法在非 Angular 页面上使用 .getText() 获取 span 元素的文本