File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ // 1번 풀이
2+ function productExceptSelf1 ( nums : number [ ] ) : number [ ] {
3+ const result : number [ ] = new Array ( nums . length ) . fill ( 1 ) ;
4+
5+ applyLeftProducts ( nums , result ) ;
6+ applyRightProducts ( nums , result ) ;
7+
8+ return result ;
9+ } ;
10+
11+ function applyLeftProducts ( nums : number [ ] , result : number [ ] ) {
12+ let prefix = 1 ;
13+ for ( let i = 0 ; i < nums . length ; i ++ ) {
14+ result [ i ] = prefix ;
15+ prefix *= nums [ i ] ;
16+ }
17+ } ;
18+
19+ function applyRightProducts ( nums : number [ ] , result : number [ ] ) {
20+ let suffix = 1 ;
21+ for ( let i = nums . length - 1 ; i >= 0 ; i -- ) {
22+ result [ i ] *= suffix ;
23+ suffix *= nums [ i ] ;
24+ }
25+ } ;
26+
27+ // 2번 풀이
28+ function productExceptSelf2 ( nums : number [ ] ) : number [ ] {
29+ const length = nums . length ;
30+ const result : number [ ] = new Array ( length ) . fill ( 1 ) ;
31+
32+ // 1단계: 왼쪽 누적 곱 저장
33+ let prefix = 1 ;
34+ for ( let i = 0 ; i < length ; i ++ ) {
35+ result [ i ] = prefix ;
36+ prefix *= nums [ i ] ;
37+ }
38+
39+ // 2단계: 오른쪽 누적 곱 곱하기 (in-place)
40+ let suffix = 1 ;
41+ for ( let i = length - 1 ; i >= 0 ; i -- ) {
42+ result [ i ] *= suffix ;
43+ suffix *= nums [ i ] ;
44+ }
45+
46+ return result ;
47+ }
48+
You can’t perform that action at this time.
0 commit comments