题解 | #连续子数组的最大和(二)#

连续子数组的最大和(二)

http://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21

public:
    vector<int> FindGreatestSumOfSubArray(vector<int>& array) {
        vector<int> dp(array.size(),0);
        int mymax=INT_MIN;
        for(int i=0;i<array.size();i++){
            if(i==0){
                dp[i]=array[i];
            }
            else{
                dp[i]=max(array[i],dp[i-1]+array[i]);
            }
            mymax=max(mymax,dp[i]);
        }
        int flag=-1;
        int length=0;
        for(int i=array.size()-1;i>-1;i--){
            if(dp[i]==mymax){
                int j=i;
                int templength=1;
                while(j!=0&&dp[j-1]+array[j]==dp[j]){
                    templength++;
                    cout<<"templength="<<templength<<"j="<<j<<endl;
                    j--;
                    cout<<dp[j-1]<<array[i]<<dp[j]<<endl;
                }
                if(templength>length){
                    flag=i;
                    length=templength;
                }
            }
        }
        vector<int> resu(array.begin()+flag-length+1,array.begin()+flag+1);
        return resu;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务