# 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; } } ```