11"""
22Constraints:
3- 1. 2 <= nums.length <= 10^5
4- 2. -30 <= nums[i] <= 30
5- 3. The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer
3+ - ๋๋์
์ฐ์ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ
4+ - O(n) ์๊ฐ ๋ณต์ก๋๋ก ๊ตฌํํด์ผ ํจ
5+ - ๋ชจ๋ prefix/ suffix ๊ณฑ์ 32๋นํธ ์ ์ ๋ฒ์ ๋ด์ ์์
66
77Time Complexity: O(n)
8- - ๋ฐฐ์ด์ ๋ ๋ฒ ์ํํ๋ฏ๋ก O(n)
8+ - ๋ฐฐ์ด์ ๋ ๋ฒ๋ง ์ํ
99
1010Space Complexity: O(1)
11- - ์ถ๋ ฅ ๋ฐฐ์ด(answer)์ ์ ์ธํ๋ฉด ์ถ๊ฐ ๊ณต๊ฐ์ด ์์๋งํผ๋ง ํ์ (left, right ๋ณ์)
11+ - ์ถ๋ ฅ ๋ฐฐ์ด ์ธ ์ถ๊ฐ ๊ณต๊ฐ์ ์์๋ง ์ฌ์ฉ (left, right ๋ณ์)
1212
1313ํ์ด ๋ฐฉ๋ฒ:
14- 1. answer ๋ฐฐ์ด์ 1๋ก ์ด๊ธฐํ (๊ณฑ์
์์๋ 1์ด ์ํฅ์ ์ฃผ์ง ์์)
15- 2. ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํ:
16- - answer[i]์ ํ์ฌ๊น์ง์ left ๋์ ๊ฐ์ ๊ณฑํจ
17- - left *= nums[i]๋ก ๋ค์์ ์ํด left ๊ฐ์ ์
๋ฐ์ดํธ
18- 3. ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ํ (range(n-1, -1, -1) ์ฌ์ฉ):
19- - answer[i]์ ํ์ฌ๊น์ง์ right ๋์ ๊ฐ์ ๊ณฑํจ
20- - right *= nums[i]๋ก ๋ค์์ ์ํด right ๊ฐ์ ์
๋ฐ์ดํธ
14+ - ๊ฐ ์์น์ ๊ฒฐ๊ณผ๋ (์ผ์ชฝ ๋ชจ๋ ์์์ ๊ณฑ) * (์ค๋ฅธ์ชฝ ๋ชจ๋ ์์์ ๊ณฑ)
15+ - ๋ ๋ฒ์ ์ํ๋ก ์ด๋ฅผ ๊ณ์ฐ:
16+ 1. ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ: ๊ฐ ์์น์ ์ผ์ชฝ ๋ชจ๋ ์์์ ๋์ ๊ณฑ ์ ์ฅ
17+ 2. ์ค๋ฅธ์ชฝ -> ์ผ์ชฝ: ๊ฐ ์์น์ ์ค๋ฅธ์ชฝ ๋ชจ๋ ์์์ ๋์ ๊ณฑ์ ๊ณฑํจ
18+
19+ ์์: nums = [1, 2, 3, 4]
20+ 1๋จ๊ณ ํ: answer = [1, 1, 2, 6]
21+ 2๋จ๊ณ ํ: answer = [24, 12, 8, 6]
2122"""
2223
24+ # Final result = (product of all elements on the left side) * (product of all elements on the right side)
25+
26+ # Step 1: Initialize result array with 1s
27+ # Step 2: Traverse from left to right, storing cumulative product of left side
28+ # Step 3: Traverse from right to left, multiplying with cumulative product of right side
29+ # nums = [1,2,3,4]
2330class Solution :
2431 def productExceptSelf (self , nums : List [int ]) -> List [int ]:
2532 n = len (nums )
@@ -29,10 +36,11 @@ def productExceptSelf(self, nums: List[int]) -> List[int]:
2936 for i in range (n ):
3037 answer [i ] *= left
3138 left *= nums [i ]
32-
39+ # answer = [1, 1, 2, 6] at this point
3340 right = 1
3441 for i in range (n - 1 , - 1 , - 1 ):
3542 answer [i ] *= right
3643 right *= nums [i ]
37-
44+
3845 return answer
46+ # answer = [24,12,8,6]
0 commit comments