152. 乘积最大子数组

    科技2023-10-14  100

    解题思路

    此时负数的出现就导致原本的最小值一下子变成了最大值,原本的最大值一下子变成了最小值,所以我们就需要同时记录这两个数值,因为没准后面是什么情况,没准现在找到的最小值就会成为最终结果的最大值。

    代码实现

    class Solution { public: int maxProduct(vector<int>& nums) { if(nums.empty()) return 0; int maxx = nums[0]; vector <int> fmax(nums), fmin(nums); for(int i = 1; i < nums.size(); ++i) { fmax[i] = max(max(fmax[i - 1] * nums[i], fmin[i - 1] * nums[i]), nums[i]); fmin[i] = min(min(fmax[i - 1] * nums[i], fmin[i - 1] * nums[i]), nums[i]); maxx = max(fmax[i], maxx); } return maxx; } };
    Processed: 0.011, SQL: 9