File tree 1 file changed +47
-26
lines changed
product-of-array-except-self
1 file changed +47
-26
lines changed Original file line number Diff line number Diff line change 6
6
* 공간 복잡도: O(1)
7
7
* - 추가 배열 생성 X
8
8
*/
9
- const productExceptSelf = ( nums ) => {
10
- let multiplyResult = 1 ;
11
- let countZero = 0 ;
9
+ // const productExceptSelf = (nums) => {
10
+ // let multiplyResult = 1;
11
+ // let countZero = 0;
12
12
13
- for ( let i = 0 ; i < nums . length ; i += 1 ) {
14
- if ( nums [ i ] === 0 ) {
15
- countZero += 1 ;
13
+ // for (let i = 0; i < nums.length; i += 1) {
14
+ // if (nums[i] === 0) {
15
+ // countZero += 1;
16
16
17
- if ( countZero >= 2 ) {
18
- multiplyResult = 0 ;
19
- break ;
20
- }
17
+ // if (countZero >= 2) {
18
+ // multiplyResult = 0;
19
+ // break;
20
+ // }
21
21
22
- continue ;
23
- }
24
- multiplyResult *= nums [ i ] ;
25
- }
22
+ // continue;
23
+ // }
24
+ // multiplyResult *= nums[i];
25
+ // }
26
+
27
+ // for (let i = 0; i < nums.length; i += 1) {
28
+ // if (countZero === 1) {
29
+ // if (nums[i] === 0) {
30
+ // nums[i] = multiplyResult;
31
+ // } else {
32
+ // nums[i] = 0;
33
+ // }
34
+ // } else if (countZero >= 2) {
35
+ // nums[i] = 0;
36
+ // } else {
37
+ // nums[i] = multiplyResult / nums[i];
38
+ // }
39
+ // }
40
+
41
+ // return nums;
42
+ // };
43
+
44
+ // 누적 합 이용
45
+ const productExceptSelf = ( nums ) => {
46
+ const result = Array ( nums . length ) . fill ( 1 ) ;
47
+
48
+ let prefix = 1 ;
26
49
27
50
for ( let i = 0 ; i < nums . length ; i += 1 ) {
28
- if ( countZero === 1 ) {
29
- if ( nums [ i ] === 0 ) {
30
- nums [ i ] = multiplyResult ;
31
- } else {
32
- nums [ i ] = 0 ;
33
- }
34
- } else if ( countZero >= 2 ) {
35
- nums [ i ] = 0 ;
36
- } else {
37
- nums [ i ] = multiplyResult / nums [ i ] ;
38
- }
51
+ result [ i ] = prefix ;
52
+ prefix *= nums [ i ] ;
53
+ }
54
+
55
+ let postfix = 1 ;
56
+
57
+ for ( let i = nums . length - 1 ; i >= 0 ; i -= 1 ) {
58
+ result [ i ] *= postfix ;
59
+ postfix *= nums [ i ] ;
39
60
}
40
61
41
- return nums ;
62
+ return result ;
42
63
} ;
You can’t perform that action at this time.
0 commit comments