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

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

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


全部评论

相关推荐

2025-12-27 16:01
重庆大学 Java
蛊界Go学长林剑行:项目部分,不光要展示技术栈的熟练程度,还要有架构意识+产品意识。知道每个业务逻辑落地的成果和技术选型的思考,不然纯炫技是没意义的,毕竟你用的这些技术大概率跟大厂实际项目不垂直,面试官不一定有兴趣
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-19 04:40
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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