---
description: 滑动窗口
---

# leetcode53.最大的子数组和

### 基本思路

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

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

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



### 解法代码

```go
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

}
```

