题解 | #连续子数组的最大和(二)#
连续子数组的最大和(二)
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数组的最大值 然后找到该值的索引位置,从索引位置往前倒推即可