링크
곱했을 때 가장 큰 값이 되는 연속적인 부분 배열 구하는 문제
def maxProduct(self, nums: List[int]) -> int:
ans = float('-inf')
res = 1
for n in nums:
res *= n
ans = max(ans, res)
if res == 0:
res = 1
res = 1
for n in reversed(nums):
res *= n
ans = max(ans, res)
if res == 0:
res = 1
return ans
def maxProduct(self, nums: List[int]) -> int:
global_max = prev_max = prev_min = nums[0]
for num in nums[1:]:
curr_min = min(prev_max*num, prev_min*num, num)
curr_max = max(prev_max*num, prev_min*num, num)
global_max= max(global_max, curr_max)
prev_max = curr_max
prev_min = curr_min
return global_max