Maximum Product Subarray

Inspiration: Kadane’s Algorithm and max-subarray problem. The caveat here is we must maintain both cur_max and cur_min, as negative numbers multiply to be positive.

result = cur_max = cur_min = nums[0]
 
for num in nums[1:]:
    cur_max, cur_min = (
        max(num, cur_max * num, cur_min * num)
        min(num, cur_max * num, cur_min * num)
    )
    result = max(cur_max, result)
 
return result