[Question]: Given an integer array nums
, find a subarray that has the largest product, and return the product. The test cases are generated so that the answer will fit in a 32-bit integer.
Example 1:
Input: nums = [2,3,-2,4] Output: 6 Explanation: [2,3] has the largest product 6.
Example 2:
Input: nums = [-2,0,-1] Output: 0 Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
// TC: O(N)
// SC: O(1)
func maxProductSubArray(_ arr: [Int]) ->Int {
var prod1 = arr[0]
var prod2 = arr[0]
var result = arr[0]
for i in 1..<arr.count {
var temp = max(arr[i],max(prod1*arr[i], prod2*arr[i]))
prod2 = min(arr[i], min(prod1*arr[i], prod2*arr[i]))
prod1 = temp
result = max(result, prod1)
}
return result
}
var inputMaxProductSubArray = [1,2,-3,0,-4,-5]
var outputMaxProductSubArray = maxProductSubArray(nums)
print("The maximum product subarray is: ", outputMaxProductSubArray)// 4