問題:
given an integer arraynums
, find the contiguous subarray within an array (containing at least one number) which has the largest product.
思路:看了這篇文章後突然明白是乙個動態規劃問題。
最大乘積子陣列一定以某個元素i結尾,所以不妨定義imax表示以當前元素a[i]結尾的最大乘積子陣列,由於負數的存在當前最大值可能**於上乙個元素的最小值。所以定義imin表示以當前元素a[i]結尾的最小乘積子陣列,當a[i]小於0時交換imax和imin
**如下:
class solution
imin=min(nums[i],imin*nums[i]);
imax=max(nums[i],imax*nums[i]);
ans=max(ans,imax);
}return ans;
}};
最大乘積子陣列
程式設計之美 上有一道關於在長度為n的陣列中找到n 1個元素乘積最大的題目,不過這並不是本文要討論的。本文討論的是另一種情況,給定乙個長度為n的浮點陣列,找乙個長度任意的子陣列 子陣列的元素在原陣列中是連續存放的 這個子陣列的乘積最大。通常,找乙個滿足指定條件子陣列都會使用動態規劃。遞迴縮小問題規模...
子陣列最大乘積
給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12。解析 此題可以運用動態規劃解決 設f i 表示以i為結尾的最大值,g i 表示以i結尾的最小值,那...
子陣列最大乘積
給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12。分析 設f i 表示以i為結尾的最大值,g i 表示以i結尾的最小值,那麼 f i 1 的最大值與...