解题思路:

首先,我们可以先不考虑删除操作,用Kadane算法求出不包含删除操作的最大子数组和maxSum,然后再考虑删除操作对结果的影响。

对于一个子数组,如果我们删除其中的一个元素,那么就变成了两个不相交的子数组,需要分别求出它们的最大子数组和。设该子数组的左端点为left,右端点为right,要删除的元素下标为del,则分别求出左子数组[left,del-1]和右子数组[del+1,right]的最大子数组和leftSum和rightSum,那么该子数组的最大元素总和就是maxSum和leftSum+rightSum的较大值。

最后,我们将所有子数组的最大元素总和取最大值即可。

Java代码实现:

java 给你一个整数数组返回它的某个 非空 子数组连续元素在执行一次可选的删除操作后所能得到的最大元素总和。换句话说你可以从原数组中选出一个子数组并可以决定要不要从中删除一个元素只能删一次哦删除后子数组中至少应当有一个元素然后该子数组剩下的元素总和是所有子数组之中最大的。

原文地址: https://www.cveoy.top/t/topic/fKCY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录