javascript - 解决最大子数组问题时出现错误“Abort Called”
问题描述
所以问题是给定一个数组,我们必须找到其中的最大可能和:
- 所有非空子数组。
- 所有非空子序列。
示例: arr = [-1,2,3,-4,5,10]
最大子数组和由索引 [1-5] 处的元素组成 它们的和为 2+3+-4+5+10 =16 最大子序列和由索引 [1,2,4,5] 处的元素组成,并且他们的总和是 [2,3,5,10] = 20
我尝试解决这个问题。但对于大型数组(长度> 50k),我收到错误“Abort Called”。这个错误背后的原因是什么?!是不是我的代码没有优化?
function maxSubarray(arr) {
let subsequenceSum = 0
for (let i = 0; i < arr.length; i++) {
if (arr[i] < 0 ) continue
else subsequenceSum += arr[i]
}
if (!subsequenceSum) {
subsequenceSum = Math.max(...arr)
}
const allsubArrays = []
const sumOfEachSubArr = []
for (let i = 0; i < arr.length; i++) {
for (let j = i ; j < arr.length; j++) {
const tempArr = arr.slice(i, j+1)
allsubArrays.push(tempArr)
}
}
// Getting sum of all subarrays
for (let subArr of allsubArrays) {
let sum = subArr.reduce((sum, curVal) => {
return sum + curVal
}, 0)
sumOfEachSubArr.push(sum)
}
let subArraySum = Math.max(...sumOfEachSubArr)
const result = []
result.push(subArraySum,subsequenceSum )
console.log(result)
return result
}
解决方案
推荐阅读
- angular - 如何将 Angular App 部署到 Heroku 并保留为 PWA?
- android - 材料设计主题颜色属性未显示
- windows - 如何为选择参数添加多个 if else 条件?
- wkhtmltopdf - 来自文件列表的 wkhtmltopdf 基于 H 标签生成错误的 TOC
- jquery - 如何将消息添加到数据表分页行
- dask - 如何在 python 中使用 dask 加速我的代码?
- scala - Scala:在数据帧的每一行中查找最大值
- javascript - 当项目存在时,JS Set.has() 返回 false 布尔值
- javascript - 来自 JSON 的 YAML 文件
- python - 使用 TextBlob 库的最高极性得分(情绪分析)