dp[i]=max(dp[i-1]+a[i],a[i]); 在此基础上,加上len参数, 判断len和最大值的变化就行
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
int dp[100005];
int maxx;
int mlen;
int mend;
vector<int> FindGreatestSumOfSubArray(vector<int>& a) {
// write code here
vector<int> ans;
if(a.size()==0) return ans;
int n=a.size();
int len=1;
mlen=1;maxx=a[0];mend=0;
dp[0]=a[0];
for(int i=1;i<n;i++){
dp[i]=max(dp[i-1]+a[i],a[i]);
if(dp[i-1]+a[i]>=a[i]) len++;
else len=1;
if(dp[i]>maxx||(dp[i]==maxx&&len>mlen)){
maxx=dp[i];mlen=len;mend=i;
}
}
for(int i=mend-mlen+1;i<=mend;i++){
ans.push_back(a[i]);
}
return ans;
}
};