【问题标题】:How to find the number of subarrays in a given array whose sum is zero如何找到给定数组中总和为零的子数组的数量
【发布时间】:2020-04-24 00:03:34
【问题描述】:

我需要在javascript中的给定数组中找到总和为0的子数组的数量。我在下面解释我的代码。

我有下面给定的数组

var arr = [1, -3, 2, 3, 6, -1];

这里的预期输出应该是1。类似地,对于下面的数组,输出应该是 2。

var arr =[4, 8, 9, -4, 1, -1, -8, -9]

这里我需要多少个子数组,其和为 0 使用 javascript。

【问题讨论】:

  • 您的代码在哪里?顺便说一句,我看到了更多的子数组。
  • 其实我需要 JavaScript 代码来打印结果。
  • 什么是遍历标准,因为你的第一个数组有多个子零数组至少 3
  • 但是已经给出了预期的输出。

标签: javascript arrays


【解决方案1】:

这应该是您要搜索的内容

let arr1 = [1, -3, 2, 3, 6, -1];
let arr2 = [4, 8, 9, -4, 1, -1, -8, -9];
let arr3 = [6, 3, -1, -3, 4, -2, 2, 4, 6, -12, -7];

function countZeroSumSubArray(arr) {
  let sum = 0;
  let counter = 0;

  for (let i = 0; i < arr.length; i++) {
    sum = 0;
    for (let j = i; j < arr.length; j++) {
      sum += arr[j];
      if (!sum) {
        ++counter;
      }
    }

  }
  return counter
}

console.log('amount:', countZeroSumSubArray(arr1))
console.log('amount:', countZeroSumSubArray(arr2))
console.log('amount:', countZeroSumSubArray(arr3))

【讨论】:

  • 这工作正常,但如果数组长度很长,嵌套的 foor 循环可能需要很长时间才能执行。
  • 这是一个简单的解决方案,只是为了让你继续前进,如果你想优化它,请发布另一个问题..
猜你喜欢
  • 2015-08-09
  • 2013-11-01
  • 2020-11-25
  • 2014-12-19
  • 2017-02-20
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多