152. 乘积最大子序列
1.想法:
1.如果全都是正数,那么就不用了算了,直接将所有的值都乘起来,而,如果全都是负数,直接返回最长的偶数个数列的乘积,
2.混合队列的话只记录局部最大值并不能找到最大值,需要记录其最小值,然后在所有最大值里面找到最大值.
image.png
2.代码
class Solution {
public int maxProduct(int[] nums) {
int result = nums[0],Min = nums[0],Max=nums[0];
for(int i=1;i<nums.length;i++){
int temp1 = Max*nums[i];
int temp2 = Min*nums[i];
int tempMax = temp1>temp2?temp1:temp2;
int tempMin = temp1<=temp2?temp1:temp2;
int max = tempMax>nums[i]?tempMax:nums[i];
int min = tempMin<=nums[i]?tempMin:nums[i];
Max=max;
Min=min;
if(Max>result){
result = Max;
}
}
return result;
}
}
网友评论