1 //1、如果nums[i]为正 2 // min_val[i] = min(min_val[i - 1] * nums[i],nums[i]); 3 // max_val[i] = max(max_val[i - 1] * nums[i],nums[i]); 4 5 //2、如果nums[i]为负 6 // min_val[i] = min(max_val[i - 1] * nums[i],nums[i]); 7 // max_val[i] = max(min_val[i - 1] * nums[i],nums[i]); 8 class Solution 9 { 10 public: 11 int maxProduct(vector<int>& nums) 12 { 13 int n = nums.size(); 14 vector<int> max_val(n,0); 15 vector<int> min_val(n,0); 16 min_val[0] = nums[0]; 17 max_val[0] = nums[0]; 18 int res = nums[0]; 19 for(int i = 1;i < n;i ++) 20 { 21 if(nums[i] > 0) 22 { 23 min_val[i] = min(min_val[i - 1] * nums[i],nums[i]); 24 max_val[i] = max(max_val[i - 1] * nums[i],nums[i]); 25 } 26 else if(nums[i] < 0) 27 { 28 min_val[i] = min(max_val[i - 1] * nums[i],nums[i]); 29 max_val[i] = max(min_val[i - 1] * nums[i],nums[i]); 30 } 31 res = max(res,max_val[i]); 32 } 33 return res; 34 } 35 };
152. 乘积最大子数组
猜你喜欢
转载自www.cnblogs.com/yuhong1103/p/12625711.html
今日推荐
周排行