@@ -8,34 +8,36 @@ function productExceptSelf(nums: number[]): number[] {
8
8
* 2. 자신이 0이 아니면
9
9
* 2-1. zeroCount가 있는지 보고 있으면 0을 return
10
10
* 2-2. zero가 없으면 sum/self를 return
11
+ *
12
+ * 그러나... 문제에 나누기 연산자를 쓰면 안된다고 했으므로 Solution 2로 가자.
11
13
*/
12
- let zeroCount = 0 ;
13
- const sum = nums . reduce ( ( p , c ) => {
14
- if ( c === 0 ) {
15
- zeroCount += 1 ;
16
- return p ;
17
- }
18
- p = p * c ;
19
- return p ;
20
- } , 1 ) ;
14
+ // let zeroCount = 0;
15
+ // const sum = nums.reduce((p, c) => {
16
+ // if (c === 0) {
17
+ // zeroCount += 1;
18
+ // return p;
19
+ // }
20
+ // p = p * c;
21
+ // return p;
22
+ // }, 1);
21
23
22
- const hasZero = zeroCount > 0 ;
24
+ // const hasZero = zeroCount > 0;
23
25
24
- if ( zeroCount === nums . length ) return Array ( nums . length ) . fill ( 0 ) ;
26
+ // if (zeroCount === nums.length) return Array(nums.length).fill(0);
25
27
26
- return nums . map ( ( n ) => {
27
- if ( n === 0 ) {
28
- // 자신 이외에 0이 있을때
29
- if ( zeroCount - 1 > 0 ) {
30
- return 0 ;
31
- }
28
+ // return nums.map((n) => {
29
+ // if (n === 0) {
30
+ // // 자신 이외에 0이 있을때
31
+ // if (zeroCount - 1 > 0) {
32
+ // return 0;
33
+ // }
32
34
33
- return sum ;
34
- }
35
+ // return sum;
36
+ // }
35
37
36
- if ( hasZero ) return 0 ;
37
- return sum / n ;
38
- } ) ;
38
+ // if (hasZero) return 0;
39
+ // return sum / n;
40
+ // });
39
41
// TC: O(N)
40
42
// SC: O(N)
41
43
@@ -44,25 +46,25 @@ function productExceptSelf(nums: number[]): number[] {
44
46
* 2. suffix: 자신을 제외한 자기 뒤까지의 곱을 저장한다.
45
47
* 3. answer[i] = prefix[i] * suffix[i]
46
48
*/
47
- // const n = nums.length;
49
+ const n = nums . length ;
48
50
49
- // const prefix = new Array(n).fill(1);
50
- // const suffix = new Array(n).fill(1);
51
+ const prefix = new Array ( n ) . fill ( 1 ) ;
52
+ const suffix = new Array ( n ) . fill ( 1 ) ;
51
53
52
- // for (let i = 1; i < n; i++) {
53
- // prefix[i] = prefix[i - 1] * nums[i - 1];
54
- // }
54
+ for ( let i = 1 ; i < n ; i ++ ) {
55
+ prefix [ i ] = prefix [ i - 1 ] * nums [ i - 1 ] ;
56
+ }
55
57
56
- // for (let i = n - 2; i >= 0; i--) {
57
- // suffix[i] = suffix[i + 1] * nums[i + 1];
58
- // }
58
+ for ( let i = n - 2 ; i >= 0 ; i -- ) {
59
+ suffix [ i ] = suffix [ i + 1 ] * nums [ i + 1 ] ;
60
+ }
59
61
60
- // const answer = [];
61
- // for (let i = 0; i < n; i++) {
62
- // answer[i] = prefix[i] * suffix[i];
63
- // }
62
+ const answer = [ ] ;
63
+ for ( let i = 0 ; i < n ; i ++ ) {
64
+ answer [ i ] = prefix [ i ] * suffix [ i ] ;
65
+ }
64
66
65
- // return answer;
67
+ return answer ;
66
68
}
67
69
// TC: O(N)
68
70
// SC: O(N)
0 commit comments