LeetCode-152. Maximum Product Subarray

网友投稿 657 2022-08-25

LeetCode-152. Maximum Product Subarray

LeetCode-152. Maximum Product Subarray

Given an integer array ​​nums​​, find the contiguous subarray within an array (containing at least one number) which has the largest product.

Example 1:

Input: [2,3,-2,4] Output: ​​6​​ Explanation: [2,3] has the largest product 6.

Example 2:

Input: [-2,0,-1]Output: 0Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

题解:

没想到O(n)算法,看讨论区是使用一个数存储当前最大一个存最小,遇到负数就交换最大最小。

class Solution {public: int maxProduct(vector& nums) { int n = nums.size(); if (n == 0) { return 0; } int res = nums[0]; int maxi = nums[0], mini = nums[0]; for (int i = 1; i < n; i++) { if (nums[i] < 0) { int tmp = mini; mini = maxi; maxi = tmp; } maxi = max(maxi * nums[i], nums[i]); mini = min(mini * nums[i], nums[i]); res = max(maxi, res); } return res; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:10个 iOS 用户暂可以嘲笑 Android 的特点
下一篇:HUST-排序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~