Skip to content

Commit 5bdb0aa

Browse files
committed
solve product-of-array-except-self
1 parent 22b763a commit 5bdb0aa

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// ๋ฐฐ์—ด์—์„œ ์ธ๋ฑ์Šค์˜ ์ˆซ์ž๋งŒ ์ œ์™ธํ•œ ์›์†Œ์˜ ๊ณฑ์˜ ๋ฐฐ์—ด์„ return ํ•˜๋Š” ๋ฌธ์ œ
2+
3+
// 1. ์ „์ฒด์˜ ๊ณฑ์„ ๊ตฌํ•œ ๋’ค, ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๋ฉด,
4+
// n์„ 2๋ฒˆ๋งŒ ๋ฐ˜๋ณตํ•˜๋ฉด ๋˜๋ฏ€๋กœ 2n ์ฆ‰, O(n)์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ
5+
6+
// 2. ํ•˜์ง€๋งŒ ์ˆ˜์— 0์ด ์„ž์—ฌ์žˆ๋‹ค๋ฉด?
7+
// 0์„ ๊ณฑํ•œ ๊ฒฝ์šฐ๋Š” ์ „๋ถ€ 0์ด๋ฏ€๋กœ ํ•ด๋‹น ์ผ€์ด์Šค ๊ณ ๋ ค ํ•„์š”
8+
// 0์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ 0์ด ์•„๋‹Œ ๋ชจ๋“  ์ˆ˜์˜ ๊ณฑ์ด 0์ธ ์ธ๋ฑ์Šค์— ๋“ค์–ด๊ฐ€๊ณ , ๋‚˜๋จธ์ง€๋Š” 0
9+
// 0์ด 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ „๋ถ€ 0
10+
11+
function productExceptSelf(nums: number[]): number[] {
12+
const zeroIndices:number[] = [];
13+
nums.forEach((num, index) => {
14+
if (num === 0) {
15+
zeroIndices.push(index);
16+
}
17+
})
18+
if (zeroIndices.length > 1) return Array.from({length: nums.length}).map(() => 0);
19+
const productOfAll = nums.reduce((prev, cur) => (cur === 0 ? prev : prev * cur), 1);
20+
if (zeroIndices.length === 1) return Array.from({length: nums.length}).map((_, index) => index === zeroIndices[0] ? productOfAll : 0);
21+
return nums.map((num) => productOfAll/num);
22+
};

0 commit comments

Comments
ย (0)