检查原始数组中是否存在总和为 0 的子数组 JavaScript

javascriptweb developmentobject oriented programming更新于 2025/10/27 3:56:17

我们需要编写一个 JavaScript 函数,该函数接受一个包含一些正值和负值的数字数组。我们需要确定原始数组中是否存在净和为 0 的子数组。

我们的函数应在此基础上返回布尔值。

方法

这里的方法很简单。我们使用 for 循环遍历数组,计算到该特定元素的累积和。如果任何点累积变为 0 或达到它之前达到的值,则存在总和为 0 的子数组。否则不存在总和为 0 的子数组。

因此,让我们为这个函数编写代码 −

示例

const arr = [4, 2, -1, 5, -2, -1, -2, -1, 4, -1, 5, -2, 3];
const zeroSum = arr => {
   const map = new Map();
   let sum = 0;
   for(let i = 0; i < arr.length; i++){
      sum += arr[i];
      if(sum === 0 || map.get(sum)){
         return true;
      };
      map.set(sum, i);
   };
   return false;
};
console.log(zeroSum(arr));

输出

控制台中的输出将是 −

true

相关文章


有用资源