javascript - 在 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
如何修复代码
任何帮助将不胜感激
解决方案
如果我没记错的话,您正在尝试最大长度sum
为input
(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));
推荐阅读
- python-3.x - 不能用beautifulsoup 抓取谷歌搜索结果
- php - 我的 HTML 都没有显示在我的 PHP 页面上
- python - 为可检查的 QListWidgetItem 设置边框
- c++ - C++ 序列化/Protobuf/Flatbuf/MYSQL_RES
- google-data-studio - 无法在 CASE 语句中使用计算字段的解决方法
- swift - 如何使用 Swiftlog 包记录错误?
- java - 用于 Web 客户端的 ObjectMapper
- garbage-collection - Java 扫描器 - 垃圾收集
- html - iframe 的广告横幅问题
- python - 如何在 Matplotlib 中使用自定义标记和形状内的文本?