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

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

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

全部评论

相关推荐

码农索隆:想看offer细节
点赞 评论 收藏
分享
07-04 09:21
已编辑
Java
推拿大师:这是hr发的钓鱼贴吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务