一. 题目

二. 思路

三. 代码

class Solution
{
    public int maxProduct(int[] nums)
    {
        int n = nums.length;
        long[] fmax = new long[n], fmin = new long[n];
        for (int i = 0; i < n; ++i)
            fmax[i] = fmin[i] = nums[i];

        for (int i = 1; i < n; ++i)
        {
            fmin[i] = Math.min(nums[i], Math.min(fmin[i - 1] * nums[i], fmax[i - 1] * nums[i]));
            fmax[i] = Math.max(nums[i], Math.max(fmin[i - 1] * nums[i], fmax[i - 1] * nums[i]));
        }
        return (int) Arrays.stream(fmax).max().getAsLong();
    }
}