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;
    }
};