# 1746. Maximum Subarray Sum After One Operation
###### tags: `Leetcode` `Medium` `Dynamic Programming`
Link: https://leetcode.com/problems/maximum-subarray-sum-after-one-operation/
## 思路
subarray题目状态定义:**包含**nums[i]的最值,(本题中就是最大subarray sum)然后在过程中记录最值
done表示包含当前数字的maximum subarray sum after one operation
notdone表示包含当前数字的maximum subarray sum before one operation
## Code
```java=
class Solution {
public int maxSumAfterOperation(int[] nums) {
int done = nums[0]*nums[0], notdone = nums[0], ans = done;
for(int i=1; i<nums.length; i++){
done = Math.max(nums[i]*nums[i], Math.max(done+nums[i], notdone+nums[i]*nums[i]));
notdone = Math.max(nums[i], notdone+nums[i]);
ans = Math.max(ans, done);
}
return ans;
}
}
```