Skip to content

Commit cf5f6c2

Browse files
committed
feat : maximum subarray product
1 parent d991815 commit cf5f6c2

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

maximum-product-subarray/ekgns33.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public int maxProduct(int[] nums) {
3+
int n = nums.length;
4+
int[][] product = new int[2][n];
5+
product[0][0] = nums[0];
6+
product[1][0] = nums[0];
7+
int max = nums[0];
8+
for(int i = 1; i < n; i++) {
9+
product[0][i] = Math.max(product[0][i-1]*nums[i], Math.max(nums[i], nums[i] * product[1][i-1]));
10+
product[1][i] = Math.min(product[0][i-1]*nums[i], Math.min(nums[i], nums[i] * product[1][i-1]));
11+
max =Math.max(max, product[0][i]);
12+
}
13+
return max;
14+
}
15+
}
16+
/**
17+
18+
19+
brute force :
20+
nested for loop
21+
tc : O(n^2)
22+
sc : O(1)
23+
24+
better sol :
25+
maintain min and max
26+
tc : O(n)
27+
sc : O(n)
28+
29+
compare with prev Min * cur, prevMax * cur, cur
30+
we have to keep track of minimum value that can lead to maximum value
31+
when there are negative values later.
32+
33+
2 3 -2 4
34+
2 6 -2 4
35+
2 2 -12 -48
36+
37+
-2 0 -1
38+
-2 0 0
39+
-2 0 -1
40+
41+
2 3 -2 5 7 -100
42+
2 6 -2 5 35 210000
43+
2 3 -6 -30 -210. -35
44+
45+
*/

0 commit comments

Comments
 (0)