乘積最大子序列

給定一個(gè)整數(shù)數(shù)組 nums ,找出一個(gè)序列中乘積最大的連續(xù)子序列(該序列至少包含一個(gè)數(shù))。

示例 1:

輸入: [2,3,-2,4]
輸出: 6
解釋: 子數(shù)組 [2,3] 有最大乘積 6。
示例 2:

輸入: [-2,0,-1]
輸出: 0
解釋: 結(jié)果不能為 2, 因?yàn)?[-2,-1] 不是子數(shù)組

解法分析

用數(shù)組max[i]和min[i]分別記錄前i個(gè)字符時(shí)的最大值和最小值,用result和max[i]進(jìn)行比較,result = Math.max(result,max[i]);

class Solution {
    public int maxProduct(int[] nums) {
        if(nums.length == 1)
            return nums[0];
        int len = nums.length;
        int result = nums[0];
        int[] max = new int[len];
        int[] min = new int[len];
        min[0] = nums[0];max[0] = nums[0];
        
        for(int i = 1; i < len; ++i){
           if(nums[i] >= 0){
               max[i] = Math.max(max[i - 1] * nums[i],nums[i]);
               min[i] = Math.min(min[i - 1] * nums[i],nums[i]);
           }else{
               max[i] = Math.max(min[i - 1] * nums[i],nums[i]);
               min[i] = Math.min(max[i - 1] * nums[i],nums[i]);
           }
            
            result = Math.max(result,max[i]);
        }
        
        return result;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在《紅海行動(dòng)》快下映的時(shí)候,帶著老瑞去看了。很激動(dòng),太好看了,從內(nèi)心再一次進(jìn)行了愛(ài)國(guó)主義教育。視覺(jué)、思想上都得到了...
    不騖于虛聲閱讀 261評(píng)論 0 0
  • 自從加入007這半年多,基本都是在享受他人的服務(wù)。因?yàn)橐粋€(gè)組織要進(jìn)化,制度和執(zhí)行力必須要足夠強(qiáng)。007作為一個(gè)寫作...
    銘達(dá)天下閱讀 549評(píng)論 0 1

友情鏈接更多精彩內(nèi)容