最大连续子数组
给定一个数组,求数组的最大连续子数组,使得该子数组的和最大
暴力法
直接先上代码
function maxSubarray(arr) {
let maxSum = arr[0]
let startIndex = 0
let endIndex = 0
for (let i = 0; i < arr.length; i++) {
for (let j = i; j < arr.length; j++) {
let currSum = 0
for (let k = i; k <= j; k++) {
currSum += arr[k]
}
if (currSum > maxSum) {
# 记录下标
maxSum = currSum
startIndex = i
endIndex = j
}
}
}
return [arr.slice(startIndex,endIndex+1),maxSum]
}
思路:
暴力法直接通过两次嵌套的循环确定连续子数组的开始下标和结束下标,其中开始下标范围是[0,arr.length-1],结束下标范围是大于等于开始下标,小于等于arr.length-1,确定好开始下标和结束下标之后,通过循环将这个下标范围内的每一项相加,得到连续子数组的和,