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

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

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

public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型vector 
     * @return int整型vector
     */
    vector<int> FindGreatestSumOfSubArray(vector<int>& array) {
        // write code here
        vector<int> ans;
        int pre=0,maxans=array[0],size=array.size();
        int tmp_idx=0,tmp_len=0;
        int max_idx=0,max_len=0;
        for(int i=0;i<size;i++){
            if(pre>=0){
                pre=pre+array[i];
                tmp_len++;
            }else{
                pre=array[i];
                tmp_idx=i;
                tmp_len=1;
            }
            if(maxans<=pre){
                if(maxans==pre){
                    if(max_len<tmp_len){
                        max_len=tmp_len;
                        max_idx=tmp_idx;
                    }
                }else{
                    max_len=tmp_len;
                    max_idx=tmp_idx;
                }
                maxans=pre;
            }
        }
        ans.assign(array.begin()+max_idx,array.begin()+max_idx+max_len);
        return ans;
    }
};
全部评论

相关推荐

10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务