领扣LintCode算法问题答案-191. 乘积最大子序列

领扣LintCode算法问题答案-191. 乘积最大子序列

191. 乘积最大子序列

描述

找出一个序列中乘积最大的连续子序列(至少包含一个数)。

  • 数组长度不超过20000
  • 乘积最大的子序列的积,小于2147483647

样例 1:

输入:
	[2,3,-2,4]
输出:
	6

样例 2:

输入:
	[-1,2,4,1]
输出:
	8

题解

public class Solution {
    /**
     * @param nums: An array of integers
     * @return: An integer
     */
    public int maxProduct(int[] nums) {
        // write your code here
        int len = nums.length;
        int[] mult = new int[len];
        mult[0] = nums[0]; //初始化
        
        for(int i = 1; i < len; i++) {
            int maxValue = nums[i]; //包含nums[i]的乘积最大子序列
            int multRes = nums[i];
            for(int j = i - 1; j >= 0; j--){
                multRes *= nums[j];
                if(multRes > maxValue){
                    maxValue = multRes;
                }
            }
            
            mult[i] = Math.max(mult[i-1], maxValue);
        }
        
        return mult[len-1];
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页