有负负得正的情况,所有考虑了最大值和最小值
要判断自己,自己乘以最大,自己乘以最小三种情况,因为max只能判断两个数,所以用了两个max
class Solution {
public:
int maxProduct(vector<int>& nums) {
int maxz=nums[0],minz=nums[0],z=nums[0];
for(int i=1;i<nums.size();i++){
int maxf=maxz,minf=minz;
maxz=max(maxf*nums[i],max(nums[i],minf*nums[i]));
minz=min(minf*nums[i],min(nums[i],maxf*nums[i]));
z=max(z,maxz); }
return z; }};