File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * [Problem]: [152] Maximum Product Subarray
3+ * (https://leetcode.com/problems/maximum-product-subarray/description/)
4+ */
5+ function maxProduct ( nums : number [ ] ) : number {
6+ // 시간복잡도 O(n^2)
7+ // 공간복잡도 O(1)
8+ function bruteForce ( nums : number [ ] ) : number {
9+ let maxProduct = nums [ 0 ] ;
10+
11+ for ( let i = 0 ; i < nums . length ; i ++ ) {
12+ let product = 1 ;
13+ for ( let j = i ; j < nums . length ; j ++ ) {
14+ product *= nums [ j ] ;
15+ maxProduct = Math . max ( maxProduct , product ) ;
16+ }
17+ }
18+
19+ return maxProduct ;
20+ }
21+
22+ // 시간복잡도 O(n)
23+ // 공간복잡도 O(1)
24+ function optimizedFunc ( nums : number [ ] ) : number {
25+ let maxResult = nums [ 0 ] ;
26+ let minResult = nums [ 0 ] ;
27+ let result = nums [ 0 ] ;
28+
29+ for ( let i = 1 ; i < nums . length ; i ++ ) {
30+ const num = nums [ i ] ;
31+
32+ if ( num < 0 ) {
33+ [ maxResult , minResult ] = [ minResult , maxResult ] ;
34+ }
35+
36+ maxResult = Math . max ( num , num * maxResult ) ;
37+ minResult = Math . min ( num , num * minResult ) ;
38+ result = Math . max ( result , maxResult ) ;
39+ }
40+
41+ return result ;
42+ }
43+ }
You can’t perform that action at this time.
0 commit comments