乘積最大子串行

2022-05-04 03:57:09 字數 726 閱讀 8601

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

樣例比如, 序列[2,3,-2,4]中乘積最大的子串行為[2,3],其乘積為6

思路:想到以什麼結尾這種模式。以i結尾的情況下子陣列的最大乘積,有三種情況:

1.等於 以i-1結尾的情況下子陣列的最小乘積*當前數(這是針對負數乘負數的情況)

2.等於 以i-1結尾的情況下子陣列的最大乘積*當前數(這是針對正數乘正數的情況)

3.等於 當前數(比如 當前數的前乙個數是0等情況)

取這三種情況的最大值為當前位置能乘出來的的最大值

這三種情況的最小值為當前位置能乘出來的的最小值

更新維護這兩個陣列

上**:

public

class

solution

int len=nums.length;

int max=new

int[len];

int min=new

int[len];

max[0]=nums[0];

min[0]=nums[0];

for(int i=1;i)

int ma=integer.min_value;

for(int i=0;i)

}return

ma; }

}

乘積最大子串行

比如,序列 2,3,2,4 中乘積最大的子串行為 2,3 其乘積為6。方法一 自己一開始寫的方法比較麻煩。通過記錄陣列中元素為0的下標,然後以0為邊界,分割陣列,然後對每個分割後的陣列分別求最大乘積子串行,最後在所有的分割陣列的最大乘積子串行中取最大乘積。class solution int len...

最大子串行乘積

思路 以元素i結尾序列提供的最大正數記做 pos,最小負數記做 nag a n 大於零時 pos n max max value max 若n 1位置存在最小負數,更新 nag n nag n 1 a n a n 小於零時 pos n max max value max 更新 nag n min a...

乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。由於存在負數,那麼最大的數可能變最小的數,最小的...