@@ -8,34 +8,36 @@ function productExceptSelf(nums: number[]): number[] {
88 * 2. 자신이 0이 아니면
99 * 2-1. zeroCount가 있는지 보고 있으면 0을 return
1010 * 2-2. zero가 없으면 sum/self를 return
11+ *
12+ * 그러나... 문제에 나누기 연산자를 쓰면 안된다고 했으므로 Solution 2로 가자.
1113 */
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);
2123
22- const hasZero = zeroCount > 0 ;
24+ // const hasZero = zeroCount > 0;
2325
24- if ( zeroCount === nums . length ) return Array ( nums . length ) . fill ( 0 ) ;
26+ // if (zeroCount === nums.length) return Array(nums.length).fill(0);
2527
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+ // }
3234
33- return sum ;
34- }
35+ // return sum;
36+ // }
3537
36- if ( hasZero ) return 0 ;
37- return sum / n ;
38- } ) ;
38+ // if (hasZero) return 0;
39+ // return sum / n;
40+ // });
3941 // TC: O(N)
4042 // SC: O(N)
4143
@@ -44,25 +46,25 @@ function productExceptSelf(nums: number[]): number[] {
4446 * 2. suffix: 자신을 제외한 자기 뒤까지의 곱을 저장한다.
4547 * 3. answer[i] = prefix[i] * suffix[i]
4648 */
47- // const n = nums.length;
49+ const n = nums . length ;
4850
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 ) ;
5153
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+ }
5557
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+ }
5961
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+ }
6466
65- // return answer;
67+ return answer ;
6668}
6769// TC: O(N)
6870// SC: O(N)
0 commit comments