输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray
一个数组求最大和连续数组,想到的就是使用动态规划来解,针对这个问题,可以先声明两个值ans、sum,一个来保存答案,一个保存当前和,每次都比较,然后获得最大的即可。这里为什么要判断sum的正负呢?如果当前和大于0,直接加当前项即可,如果小于0,那么我也没有必要保存之前的和,因为加上当前项肯定比原先的值大
func MaxSubArray(nums []int) int {
ans := nums[0]
sum := 0
for _, val := range nums {
if sum > 0 {
sum += val
} else {
sum = val
}
if ans < sum {
ans = sum
}
}
return ans
}
// 执行用时:4ms
// 内存消耗:3.3MB