Skip to content

Commit e1d144d

Browse files
committed
add: solve #239 Product of Array Except Self with ts
1 parent e8d4b4a commit e1d144d

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
}

0 commit comments

Comments
ย (0)