import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindGreatestSumOfSubArray (int[] array) {
int[] dp=new int[array.length];
dp[0]=array[0];
int maxLength=1,maxSum=array[0],left=0,right=0,sLeft=0,sRight=0;
for(int i=1;i<array.length;++i){
++right;
dp[i]=Math.max(array[i]+dp[i-1],array[i]);
if(array[i]+dp[i-1]<array[i])left=right;
if(dp[i]>maxSum||dp[i]==maxSum&&(right-left+1)>maxLength){
sLeft=left;
sRight=right;
maxLength=right-left+1;
maxSum=dp[i];
}
}
int[] res=new int[maxLength];
int idx=0;
for(int i=sLeft;i<=sRight;++i){
res[idx++]=array[i];
}
return res;
}
}
2021-12-09(JZ85 连续子数组的最大和(二))
最新推荐文章于 2025-12-16 14:17:05 发布
本文介绍了一种使用动态规划解决最大小连续子数组和问题的方法。通过Java实现的Solution类展示了如何维护前缀和数组并更新最大和及其范围。关键在于理解状态转移方程和剪枝策略,适用于数组和算法基础学习者。
172万+

被折叠的 条评论
为什么被折叠?



