LintCode 191 乘積最大子序

2021-08-08 22:20:37 字數 565 閱讀 1454

找出乙個序列中乘積最大的連續子串行(至少包含乙個數)。 樣例

比如, 序列[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 ...