File tree 1 file changed +38
-0
lines changed
product-of-array-except-self
1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 주어진 배열에서 자신의 인덱스를 제외한 나머지 요소들의 곱을 계산하는 함수
3
+ *
4
+ * @param {number[] } nums - 정수 배열
5
+ * @returns {number[] } - 각 인덱스의 요소를 제외한 나머지 요소들의 곱을 구한 배열
6
+ *
7
+ * 1. 결과 배열 `result`를 1로 초기화.
8
+ * 2. 왼쪽에서 오른쪽으로 순회하며 `left` 값을 이용해 기준 idx 이전의 값을 계산하여 `result`에 저장.
9
+ * 3. 오른쪽에서 왼쪽으로 순회하며 `right` 값을 이용해 접미 기준 idx 이후의 값들을 계산 히야 `result`에 곱함.
10
+ * 4. 결과 배열 `result`를 반환.
11
+ *
12
+ * 시간 복잡도:
13
+ * - 왼쪽에서 오른쪽 순회: O(n)
14
+ * - 오른쪽에서 왼쪽 순회: O(n)
15
+ * - 전체 시간 복잡도: O(n)
16
+ *
17
+ * 공간 복잡도:
18
+ * - 추가 배열 없이 상수 공간 사용 (result는 문제의 요구 조건에 포함되지 않음).
19
+ * - 전체 공간 복잡도: O(1)
20
+ */
21
+ function productExceptSelf ( nums : number [ ] ) : number [ ] {
22
+ const numLength = nums . length ;
23
+ const result = new Array ( numLength ) . fill ( 1 ) ;
24
+
25
+ let left = 1 ;
26
+ for ( let i = 0 ; i < numLength ; i ++ ) {
27
+ result [ i ] *= left ;
28
+ left *= nums [ i ] ;
29
+ }
30
+
31
+ let right = 1 ;
32
+ for ( let i = numLength ; i >= 0 ; i -- ) {
33
+ result [ i ] *= right ;
34
+ right *= nums [ i ] ;
35
+ }
36
+
37
+ return result ;
38
+ }
You can’t perform that action at this time.
0 commit comments