Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4]
,
the contiguous subarray [2,3]
has the largest product = 6
.
Solution: use DP?
Running Time: O(n)
class Solution:
# @param A, a list of integers
# @return an integer
def maxProduct(self, A):
if len(A) == 1:
return A[0]
max_sofar = max_here = min_here = A[0]
for i in A[1:]:
max_here_temp = max(i, max(max_here*i, min_here*i))
min_here_temp = min(i, min(max_here*i, min_here*i))
max_here = max_here_temp
min_here = min_here_temp
max_sofar = max(max_sofar, max_here)
return max_sofar
最近leetcode开始给solution了,不知道对之后的公司面试是否有影响。刷题的过程重在理解,只靠背还是不行的。