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

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

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


全部评论

相关推荐

有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
点赞 评论 收藏
分享
mjasjon:这种trash中厂 简历过筛概率比大厂还低(除阿里系)
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务