---
# System prepended metadata

title: 1186. Maximum Subarray Sum with One Deletion
tags: [Leetcode, Dynamic Programming, Medium]

---

# 1186. Maximum Subarray Sum with One Deletion
###### tags: `Leetcode` `Medium` `Dynamic Programming`
Link: https://leetcode.com/problems/maximum-subarray-sum-with-one-deletion/
## 思路
这道题不能用sliding window 因为有负数
![](https://i.imgur.com/1sUG0mK.png)
注意初始条件的设定 
如果count1, count2, ans都初始设成0，那么如果整个array都是负数，例如[-1,-1,-1,-1]答案就会是0而不是-1
如果count1设成```Integer.MIN_VALUE```, 那么count1+num有可能变成Integer.MAX_VALUE, 答案就会变成Integer.MAX_VALUE
所以我们直接用arr[0]定义初始条件
## Code
```java=
class Solution {
    public int maximumSum(int[] arr) {
        int count1=arr[0], count2=0, ans=arr[0];
        for(int i=1; i<arr.length; i++){
            int num = arr[i];
            int temp_count1 = count1;
            count1 = Math.max(num, count1+num);
            count2 = Math.max(count2+num, temp_count1);
            ans = Math.max(ans, Math.max(count1, count2));
        }
        return ans;
    }
}
```