Skip to content

Commit bf3f9cb

Browse files
committed
solve(w09): 152. Maximum Product Subarray
1 parent de68c2e commit bf3f9cb

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+
# https://leetcode.com/problems/maximum-product-subarray/
2+
3+
from typing import List
4+
5+
class Solution:
6+
def maxProduct(self, nums: List[int]) -> int:
7+
"""
8+
[Complexity]
9+
- TC: O(n)
10+
- SC: O(1)
11+
12+
[Approach]
13+
nums๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ๊ฐ’ num์ด ํฌํ•จ๋˜๋Š” max subarray product๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
14+
max(์ด์ „ ๊ฐ’๊ณผ ์—ฐ์†๋˜๋Š” subarray์ธ ๊ฒฝ์šฐ, ์ด์ „ ๊ฐ’๊ณผ ์—ฐ์†๋˜์ง€ ์•Š๋Š” subarray์ธ ๊ฒฝ์šฐ)๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.
15+
- num์ด ์–‘์ˆ˜์ผ ๋•Œ: max(์ด์ „๊นŒ์ง€์˜ max subarray product * num, num)
16+
- num์ด ์Œ์ˆ˜์ผ ๋•Œ: max(์ด์ „๊นŒ์ง€์˜ min subarray product * num, num)
17+
๋”ฐ๋ผ์„œ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ์ด์ „๊นŒ์ง€์˜ max subarray product(= max_p)์™€ min subarray product(= min_p)๋ฅผ ํŠธ๋ž˜ํ‚นํ•ด์•ผ ํ•œ๋‹ค.
18+
"""
19+
res = max_p = min_p = nums[0]
20+
21+
for i in range(1, len(nums)):
22+
num = nums[i]
23+
24+
# 1. num์ด ์Œ์ˆ˜๋ผ๋ฉด, max_p์™€ min_p ๋ฐ”๊ฟ”์น˜๊ธฐ
25+
# if num < 0:
26+
# max_p, min_p = min_p, max_p
27+
28+
# 2. max_p, min_p ์—…๋ฐ์ดํŠธ
29+
# max_p = max(max_p * num, num)
30+
# min_p = min(min_p * num, num)
31+
32+
# 1 & 2๋ฒˆ ๋Œ€์‹ , ๋‹ค์ค‘ ํ• ๋‹น์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
33+
max_p, min_p = max(max_p * num, min_p * num, num), min(max_p * num, min_p * num, num)
34+
35+
# 3. res ๊ฐ’ ์—…๋ฐ์ดํŠธ
36+
res = max(res, max_p)
37+
38+
return res

0 commit comments

Comments
ย (0)