public class Main {
public int maxProduct(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int n = nums.length;
int maxHerePre = nums[0];
int minHerePre = nums[0];
int maxSofar = nums[0];//最大乘积
int minSofar = nums[0];//最小乘积
int maxHere, minHere;
for (int i = 1; i < n; i++) {//下标从1开始
maxHere = Math.max(Math.max(maxHerePre * nums[i], minHerePre * nums[i]), nums[i]);
minHere = Math.min(Math.min(maxHerePre * nums[i], minHerePre * nums[i]), nums[i]);
maxSofar = Math.max(maxSofar, maxHere);//连续子数组最大乘积
minSofar = Math.min(minSofar,minHere);//连续子数组最小乘积
maxHerePre = maxHere;
minHe
连续子数组的最大乘积、最小乘积
最新推荐文章于 2025-06-14 23:03:24 发布