-
Notifications
You must be signed in to change notification settings - Fork 0
/
leetcode152.cpp
38 lines (38 loc) · 1.11 KB
/
leetcode152.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n = nums.size();
if(n == 1)
return nums[0];
int pmax = 0,nmax = 0, m = 0;
for(int i = 0; i < n; ++i)
{
if(nums[i] < 0)
swap(pmax,nmax);
pmax = max(pmax * nums[i], nums[i]);
nmax = min(nmax * nums[i], nums[i]);
m = max(m,pmax);
}
return m;
/*vector<int> dp(n);
for(int i = 0; i < n; ++i)
dp[i] = 0;
dp[0] = nums[0];
for(int i = 1; i < n; i++)
{
if((dp[i-1] < 0 && nums[i] < 0) || (dp[i-1] > 0 && nums[i] > 0))
dp[i] = dp[i-1] * nums[i];
else if(dp[i-1] <= 0 && nums[i] > 0)
dp[i] = nums[i];
else if(dp[i-1] > 0 && nums[i] <= 0)
dp[i] = dp[i-1];
else if(dp[i-1] = 0 && nums[i] < 0)
dp[i] = 0;
//else if(dp[i-1] < 0 && nums[i] = 0)
// dp[i] = nums[i];
else
dp[i] = dp[i-1];
}
return dp[n-1];*/
}
};