Code Interview Guide for Programmers Chapter 8 Arrays and Matrix Questions Maximum Cumulative Product of Subarrays in Arrays

topic

数组中子数组的最大累乘积

java code

package com.lizhouwei.chapter8;

/**
 * @Description: 数组中子数组的最大累乘积
 * @Author: lizhouwei
 * @CreateDate: 2018/5/8 21:59
 * @Modify by:
 * @ModifyDate:
 */
public class Chapter8_19 {
    public double maxProduct(double[] arr) {
        double maxValue = arr[0];
        double minValue = arr[0];
        double curMinValue = arr[0];
        double curMaxValue = arr[0];
        double res = arr[0];
        for (int i = 1; i < arr.length; i++) {
            curMaxValue = maxValue * arr[i];
            curMinValue = minValue * arr[i];
            maxValue = Math.max(Math.max(curMinValue, curMaxValue), arr[i]);
            minValue = Math.min(Math.min(curMinValue, curMaxValue), arr[i]);
            res = Math.max(res, maxValue);
        }
        return res;
    }

    //测试
    public static void main(String[] args) {
        Chapter8_19 chapter = new Chapter8_19();
        double[] arr = {-2.5, 4, 0, 3, 0.5, 8, -1};
        System.out.print("数组 arr = {-2.5, 4, 0, 3, 0.5, 8, -1}最大累积为:");
        double res = chapter.maxProduct(arr);
        System.out.print(res);
    }
}

result

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325970698&siteId=291194637