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