JAVA算法:求最大子数组乘积问题(JAVA版本)
给定一个整数数组 nums
,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
问题分析
算法设计
Solution 1
package com.bean.algorithmbasic;
public class MaximumProductSubarray {
/*
* 最大连续子数组乘积
*
* 给定一个整形数组,求最大子数组的乘积。
*
* 问题分析:
* 数组元素可能包含正数、负数和0.
* 另外,根据题目要求,子数组要连续。
*
* */
public static int maxProduct(int[] nums) {
//如果数组为null或者数组长度为0,直接返回0.
if (nums == null || nums.length == 0) {
return 0;
}
//开始将A[0]分别设置为:最大值、最小值,和最终的返回结果。
int max = nums[0], min = nums[0], result = nums[0];
//从数组的第二个元素开始取值
for (int i = 1; i < nums.length; i++) {
int temp = max;
//状态转换方程的定义和实现