- 最大连续乘积数组
在一个数组中寻找连续乘积最大的子数组,最少包括一个元素
例子 1:
输入: [2,3,-2,4] 输出: 6 解释: [2,3] 最大是 6.
例子 2:
输入: [-2,0,-1] 输出: 0 解释: 结果不能是 2, 因为 [-2, -1] 不连续.
题解 1 dp[i] 表示数组 i 位置的最大连续乘积最大的数组,dp[i+1] 要么等于 dp[i],要么等于 nums[i]为结尾的连续乘积最大的数组
题目比较简单,时间复杂度 O(n^2),空间复杂度 O(n)
/**
* @param {number[]} nums
* @return {number}
*/
export default (nums) => {
let dp = [];
dp[0] = nums[0];
for (let i = 1; i < nums.length; i++) {
let maxNum = 1;
dp[i] = nums[i];
for (let j = i; j >= 0; j--) {
maxNum = maxNum * nums[j];
if (maxNum > dp[i - 1] || (dp[i] && maxNum > dp[i])) {
dp[i] = maxNum;
}
// if (maxNum < dp[i - 1] && maxNum !== 1 && maxNum !== nums[j]) {
// break;
// }
}
dp[i] = Math.max(dp[i], dp[i - 1]);
}
return dp[nums.length - 1];
};