面试算法-104-乘积最大子数组

题目

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续

子数组

(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

示例 1:

输入: nums = [2,3,-2,4]

输出: 6

解释: 子数组 [2,3] 有最大乘积 6。

java 复制代码
class Solution {
    public int maxProduct(int[] nums) {
        int n = nums.length;
        int[][] dp = new int[n][2];

        dp[0][0] = nums[0];
        dp[0][1] = nums[0];
        int max = nums[0];
        for (int i = 1; i < n; i++) {
            if (nums[i] > 0) {
                dp[i][0] = Math.max(nums[i], dp[i - 1][0] * nums[i]);
                dp[i][1] = Math.min(nums[i], dp[i - 1][1] * nums[i]);
            } else {
                dp[i][0] = Math.max(nums[i], dp[i - 1][1] * nums[i]);
                dp[i][1] = Math.min(nums[i], dp[i - 1][0] * nums[i]);
            }
            max = Math.max(max, dp[i][0]);
        }
        return max;
    }
}
相关推荐
Hiweir ·3 分钟前
机器翻译之创建Seq2Seq的编码器、解码器
人工智能·pytorch·python·rnn·深度学习·算法·lstm
Element_南笙6 分钟前
数据结构_1、基本概念
数据结构·人工智能
star数模16 分钟前
2024“华为杯”中国研究生数学建模竞赛(E题)深度剖析_数学建模完整过程+详细思路+代码全解析
python·算法·数学建模
Tak1Na18 分钟前
2024.9.19
算法
熙曦Sakura32 分钟前
【数据结构】队列
数据结构
sjsjs1138 分钟前
【数据结构-扫描线】力扣57. 插入区间
数据结构·算法·leetcode
xiaozhang_7493380139 分钟前
数据结构day2
数据结构
王哈哈嘻嘻噜噜40 分钟前
数据结构中线性表的定义和特点
数据结构·算法
一杯茶一道题1 小时前
LeetCode 260. 只出现一次的数字 III
算法·leetcode
MogulNemenis1 小时前
力扣415周赛
java·数据结构·算法·leetcode