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

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

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数组的最大值
然后找到该值的索引位置,从索引位置往前倒推即可


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:30
找工作7个月,投了7000封,3段世界五百强实习,才有一个offer,牛油们肯定比我强吧
码农索隆:不对不对不对,实习经历这么厉害,简历也没少投,问题出在哪呢
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
07-11 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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