給定一個整數數組 nums
,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。
思路: 連續子數組[ai,...aj]的和=從下標0開始至j結束的子數組和-從下標0開始至i-1結束的子數組和
Sum
ij =
Sum
0j
- Sum
0(i-1)
即求 Max(Sum)-Min(Sum)
func maxSubArray(nums []int) int { sum:=0 max:=nums[0] min:=0 for _,v:=range nums{ sum=sum+v if max<sum-min{ max=sum-min } if min>sum{ min=sum } } return max }