leetcode53.最大的子数组和

滑动窗口

基本思路

1.扩大窗口,并且累计数组和

2.维护最大数组和,当数组和小于0,向左偏移缩减窗口

3.重复1,2步骤,直到r到达数组的结尾

解法代码

func maxSubArray(nums []int) int {
    l,r:=0,0
    winSum,maxSum:=0,-1<<31
    
    for r<len(nums){
        winSum+=nums[r]
        r++
        
        if winSum>maxSum{
            maxSum=winSum
        }
        
        for winSum<0{
            winSum-=nums[l]
            l++
        }
    }
    return maxSum

}

Last updated