首页 > 解决方案 > 在 JavaScript 中查找最大子数组长度

问题描述

我做了一个查找最大子数组长度的函数。它工作正常,但有一些输入它不显示正确的输出。

这是我的代码:

    function maxLength(a, k) {
      function sumOfArray(arr) {
        return arr.reduce((a, b) => a + b, 0);
      }

      var sub_array = [];
      for (var i = 0; i < a.length; i++) {
        for (var j = i + 1; j < a.length; j++) {
          if (j - i > sub_array.length && sumOfArray(a.slice(i, j)) < k) {
            sub_array = a.slice(i, j);
          }
        }
      }
      return sub_array.length;
    }


console.log(maxLength([3,1,2,1,4], 4))

显示错误答案的输入为:[3,1,2,1,4],k = 4输出为 2,但正确答案为 3

如何修复代码

任何帮助将不胜感激

标签: javascriptarrays

解决方案


如果我没记错的话,您正在尝试最大长度suminput(k) 的子数组。

对于您的if condition=>< k中的这种更改< =k

if (j - i > sub_array.length && sumOfArray(a.slice(i, j)) < k) 

if (j - i > sub_array.length && sumOfArray(a.slice(i, j)) <= k)  

function maxLength(a, k) {
  function sumOfArray(arr) {
    return arr.reduce((a, b) => a + b, 0);
  }

  var sub_array = [];
  for (var i = 0; i < a.length; i++) {
    for (var j = i + 1; j < a.length; j++) {
      if (j - i > sub_array.length && sumOfArray(a.slice(i, j)) <= k) {
        sub_array = a.slice(i, j);
      }
    }
  }
  return sub_array.length;
}
console.log(maxLength([3,1,2,1,4],4));
console.log(maxLength([3,1,2,1,4],7));
console.log(maxLength([1,1,1,1,3,1,2,1,4],7));


推荐阅读