思路:

  1. 遍历数组,计算不删除的情况下的最大子数组和maxSum和整个数组的和totalSum。
  2. 再次遍历数组,计算删除一个元素后的最大子数组和,需要分别考虑删除首元素、尾元素和中间元素三种情况。删除首元素时,最大子数组和为从第二个元素开始到最后一个元素的最大子数组和;删除尾元素时,最大子数组和为从第一个元素开始到倒数第二个元素的最大子数组和;删除中间元素时,最大子数组和为从第一个元素开始到该元素前一个元素的最大子数组和与从该元素后一个元素开始到最后一个元素的最大子数组和之和。
  3. 最终结果为max(maxSum, totalSum - min(deleteSum)),其中deleteSum为删除一个元素后的最大子数组和,min(deleteSum)为deleteSum中的最小值。

代码实现:

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

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

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