# @param {Integer[]} nums
# @return {Integer}
def max_product(nums)
@largest = -Float::INFINITY
@min = 1
@max = 1
for num in nums do
@temp = @max * num
@max = [num * @max, num * @min, num].max
@min = [num * @min, @temp, num].min
@largest = [@max, @largest, num].max
end
return @largest
end