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

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

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param array int整型一维数组 
 * @return int整型一维数组
 */
function FindGreatestSumOfSubArray( array ) {
    let dp = new Array(array.length);
    dp[0] = array[0];
    
    for(let i = 1; i < array.length; i++){
        dp[i] = Math.max(array[i], array[i] + dp[i-1]);
    }

    let maxVal = Math.max(...dp);
    let index = dp.lastIndexOf(maxVal);
    let j = index;
    for( ; j>= 1; j--){
        if(dp[j-1] < 0) break;
    }
    
    return array.slice(j, index+1);
}

先使用动态规划找出最大连续子数组和的值,也就是dp数组的最大值
然后找到该值的索引位置,从索引位置往前倒推即可


全部评论

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务