152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
package com.demo.thinking; import java.util.Arrays; import java.util.List; public class MaxProduct { public static void main(String[] args) { List<Integer> list = Arrays.asList(-2, 0, -1, 3, 6); int i = maxProduct(list); System.out.println(i); } public static int maxProduct(List<Integer> nums) { Integer maxF = nums.get(0), minF = nums.get(0), ans = nums.get(0); for (int i = 1; i < nums.size(); ++i) { int mx = maxF, mn = minF; maxF = Math.max(mx * nums.get(i), Math.max(nums.get(i), mn * nums.get(i))); minF = Math.min(mn * nums.get(i), Math.min(nums.get(i), mx * nums.get(i))); ans = Math.max(maxF, ans); } return ans; } }
来源:oschina
链接:https://my.oschina.net/u/1999167/blog/4437360