找出乙個序列中乘積最大的連續子串行(至少包含乙個數)。 樣例
比如, 序列[2,3,-2,4]
中乘積最大的子串行為[2,3]
,其乘積為6
。
思路:動態規劃,每一步只需要記住其前一步的整數最大值和負數的最小值。因為涉及到正負,所以要儲存最小值和最大值兩種情況,因為負負得正。最小值的比較包括nums[i]、min
nums[i] 、max
nums[i],最大值與此相同,其實最大值就是正數,最小值是負數,中間值沒必要記錄。
class solution {
public:
/** @param nums: an array of integers
* @return: an integer
*/int maxproduct(vector&nums) {
int posmax = nums[0]; //正數最大
int negmax = nums[0]; //負數最大
int ret = nums[0]; //最大
for(int i=1;i
質數乘積 LintCode
給定乙個無重複的質數陣列arr,每個質數最多使用一次,求所有無重複的乘積並從小到大排序。注意事項 2 arr 9 2 arr i 23樣例 給出 arr 2,3 返回 6 解釋 2 3 6。給出 arr 2,3,5 返回 6,10,15,30 解釋 2 3 6,2 5 10,3 5 15,2 3 5...
191 乘積最大子串行 兩個最值型動態規劃
中文english 找出乙個序列中乘積最大的連續子串行 至少包含乙個數 樣例 1 輸入 2,3,2,4 輸出 6樣例 2 輸入 1,2,4,1 輸出 8 陣列長度不超過20000 乘積最大的子串行的積,小於2147483647 輸入測試資料 每行乙個引數 如何理解測試資料?class solutio...
lintcode 四數乘積問題
給定乙個長度為n的陣列a和乙個正整數k,從陣列中選擇四個數,要求四個數的乘積小於等於k,求方案總數。陣列中可能出現多個值相同的數。每次選擇四個數時,同乙個數不能被選擇兩次,而值相同的兩個不同的數可以同時被選。1 leq n leq 10 31 n 10 3 1 leq a i leq 10 6 1 ...