使用 JavaScript 的循环数组中的最大子数组和
问题
我们需要编写一个JavaScript函数,它接受一个整数数组arr作为第一个也是唯一的参数。
我们可以认为这个数组arr是一个圆形数组,这意味着数组的最后一个元素将跟随第一个元素。我们的函数应该找到并返回arr的非空子数组的最大可能和。
例如,如果函数的输入是
输入
const arr = [2, -2, 3, -1];
输出
const output = 4;
输出说明
因为想要的子数组是[3,-1,2]
示例
const arr = [2, -2, 3, -1];
const maxSubarraySumCircular = (arr = []) => {
let max = arr[0]
let min = arr[0]
let currentMax = max
let currentMin = min
let sum = arr[0]
for (let i = 1; i < arr.length; i++) {
currentMax = arr[i] + Math.max(currentMax, 0)
max = Math.max(max, currentMax)
currentMin = arr[i] + Math.min(currentMin, 0)
min = Math.min(min, currentMin)
sum += arr[i]
}
return max < 0 ? max : Math.max(max, sum - min)
}
console.log(maxSubarraySumCircular(arr));输出结果4
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短