题目描述:
给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。
注意,删除一个元素后,子数组 不能为空。
示例:
解题思路:
sum0存储不删除子数组的和,sum1存储删除一个元素的子数组的和,通过循环,获取最大值进行输出。
代码附上:
class Solution {
public int maximumSum(int[] arr) {
int sum0=arr[0],sum1=arr[0],ref=arr[0];
for(int i=1;i<arr.length;i++) {
sum1=Math.max(sum0,sum1+arr[i]);
sum0=Math.max(sum0,0)+arr[i];
ref=Math.max(ref,Math.max(sum0,sum1));
}
return ref;
}
}