Skip to content

Commit c1e30f2

Browse files
committed
Product of Array Except Self Solution
1 parent a32772e commit c1e30f2

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Solution:
2+
def productExceptSelf(self, nums: List[int]) -> List[int]:
3+
# Solution 1 :모든 수를 미리 곱해두기
4+
# 0을 포함한다면 미리 0의 개수를 체크해두기
5+
6+
n = len(nums)
7+
ret = [0 for _ in range(n)]
8+
"""
9+
all_product = 1
10+
non_zero_product = 1
11+
zero_cnt = 0
12+
13+
for x in nums:
14+
all_product *= x
15+
16+
if x == 0:
17+
zero_cnt += 1
18+
else:
19+
non_zero_product *= x
20+
21+
if zero_cnt > 1:
22+
return ret
23+
24+
for i in range(n):
25+
if nums[i] == 0:
26+
ans = non_zero_product
27+
else:
28+
ans = all_product // nums[i]
29+
ret[i] = ans
30+
return ret
31+
"""
32+
33+
# Solution 2 : w/o division
34+
# prefix sum과 같이 풀이 진행
35+
# Tc : O(n) / Sc : O(n) - no extra memory
36+
37+
prefix_pr, postfix_pr = 1, 1
38+
for i in range(n):
39+
ret[i] = prefix_pr
40+
prefix_pr *= nums[i]
41+
for i in range(n-1, -1, -1):
42+
ret[i] *= postfix_pr
43+
postfix_pr *= nums[i]
44+
return ret
45+
46+

0 commit comments

Comments
 (0)