# Leetcode 1567. Maximum Length of Subarray With Positive Product ###### tags: `Leetcode(C++)` 題目 : https://leetcode.com/problems/maximum-length-of-subarray-with-positive-product/submissions/ 。 想法 : 跟上一題類似,主要的差別在於要記錄現在有幾個負數,當遇到0或是遇到結尾就計算相乘後為正數的最大長度。 寫完本題之後,覺得從尾巴再算到頭去當作分辨奇數個負號的方法真的太鬼了。 時間複雜度 : O(n)。 程式碼 : ``` class Solution { public: int getMaxLen(vector<int>& nums) { int l = nums.size(), Maxl=0, fr = 0, cnt=0; for(int i=0 ; i<l ; i++){ if(nums[i] == 0){ fr = i+1; cnt = 0; continue; } if(nums[i] < 0){ cnt++; } if(cnt % 2 == 0){ //cout << i << " " << fr << endl; Maxl=max(Maxl , i-fr+1); } } fr=l-1; cnt=0; for(int i=l-1 ; i>=0 ; i--){ if(nums[i] == 0){ fr = i-1; cnt = 0; continue; } if(nums[i] < 0){ cnt++; } if(cnt % 2 == 0){ //cout << i << " " << fr << endl; Maxl=max(Maxl , fr-i+1); } } return Maxl; } }; ```