Skip to content

Commit ba0ac0a

Browse files
committed
feat: Add product-of-array-except-self solutions
1 parent 3e3a08e commit ba0ac0a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution:
2+
def productExceptSelf(self, nums: List[int]) -> List[int]:
3+
"""
4+
Intuition:
5+
i번째 인덱슀의 값을 κ³„μ‚°ν•˜κΈ° μœ„ν•΄μ„œλŠ”
6+
0 ~ i-1 κΉŒμ§€μ˜ κ°’κ³Ό i+1 ~ N κΉŒμ§€μ˜ 값을 λͺ¨λ‘ κ³±ν•΄μ•Ό ν•œλ‹€.
7+
이의 λˆ„μ κ³±μ„ μ €μž₯ν•˜μ—¬, κ³„μ‚°ν•œλ‹€.
8+
9+
Time Complexity:
10+
O(N):
11+
리슀트λ₯Ό 1번 μˆœνšŒν•˜λ©° 닡을 μ°ΎμœΌλ―€λ‘œ,
12+
O(N)의 μ‹œκ°„λ³΅μž‘λ„κ°€ μ†Œμš”λœλ‹€.
13+
14+
Space Complexity:
15+
O(N):
16+
forward λ°°μ—΄κ³Ό backward 배열에 N개의 μ›μ†Œλ₯Ό μ €μž₯ν•˜λ―€λ‘œ
17+
O(N)의 κ³΅κ°„λ³΅μž‘λ„κ°€ μ†Œμš”λœλ‹€.
18+
19+
Key takeaway:
20+
μŠ€μΊ”ν•˜μ—¬ 값을 μ €μž₯ν•΄λ‘λŠ” 방식을 μˆ™μ§€ν•˜μž.
21+
"""
22+
for_val = 1
23+
back_val = 1
24+
forward = []
25+
backward = []
26+
for i in range(len(nums)):
27+
forward.append(for_val)
28+
backward.append(back_val)
29+
30+
for_val *= nums[i]
31+
back_val *= nums[-(i + 1)]
32+
backward = backward[::-1]
33+
34+
answer = [forward[i] * backward[i] for i in range(len(nums))]
35+
return answer

0 commit comments

Comments
Β (0)