【刷算法】一连子数组的最大和

function FindGreatestSumOfSubArray(arr)
{
    if(arr.length === 0)
        return;
    if(arr.length === 1)
        return arr[0];
    var allNeg = true;
    var negMax = -Infinity;
    for(var i = 0;i < arr.length;i++) {
        if(arr[i] > negMax){
            negMax = arr[i];
        }
        if(arr[i] >= 0){
            allNeg = false;
        }
    }
    
    if(allNeg)
        return negMax;
    
    var max = -Infinity, cur = 0;
    
    for(var i = 0;i < arr.length;i++) {
        cur += arr[i];
        max = Math.max(max, cur);
        cur = cur >=0 ? cur : 0;
    }
    
    return max;
}
    原文作者:亚古
    原文地址: https://segmentfault.com/a/1190000015802370
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞