File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Source: https://leetcode.com/problems/maximum-product-subarray/
3+ * 풀이방법: 현재 곱과 최대 곱을 비교하여 최대값을 구함
4+ *
5+ * 시간복잡도: O(n)
6+ * 공간복잡도: O(1)
7+ *
8+ * 다른 풀이방법
9+ * - DP를 이용하여 풀이
10+ */
11+ function maxProduct ( nums : number [ ] ) : number {
12+ if ( nums . length === 0 ) return 0 ;
13+
14+ let maxProduct = nums [ 0 ] ;
15+ let currentProduct = 1 ;
16+
17+ // 왼쪽에서 오른쪽으로 순회
18+ for ( let i = 0 ; i < nums . length ; i ++ ) {
19+ currentProduct *= nums [ i ] ;
20+ maxProduct = Math . max ( maxProduct , currentProduct ) ;
21+ // 현재 곱이 0이 되면 리셋
22+ if ( currentProduct === 0 ) {
23+ currentProduct = 1 ;
24+ }
25+ }
26+
27+ currentProduct = 1 ;
28+
29+ // 오른쪽에서 왼쪽으로 순회
30+ for ( let i = nums . length - 1 ; i >= 0 ; i -- ) {
31+ currentProduct *= nums [ i ] ;
32+ maxProduct = Math . max ( maxProduct , currentProduct ) ;
33+ // 현재 곱이 0이 되면 리셋
34+ if ( currentProduct === 0 ) {
35+ currentProduct = 1 ;
36+ }
37+ }
38+
39+ return maxProduct ;
40+ }
You can’t perform that action at this time.
0 commit comments