乘积最大子序列

LintCode题目地址
找出一个序列中乘积最大的连续子序列(至少包含一个数)。

def maxProduct(self, nums):
        # write your code here
        # 因为有负数,所以需要记录当前点之前的子序列的最大最小值
        
        
        # 分析:访问到每个点的时候,以该点为子序列的末尾的乘积,
        # 要么是该点本身,要么是该点乘以以前一点为末尾的序列,
        # 注意乘积负负得正,故需要记录前面的最大最小值。
        n = len(nums)
        maxList = [0] * n
        minList = [0] * n
        multiper = nums[0]
        for i in range(n):
            # 记录该点本身
            maxList[i] = nums[i]
            minList[i] = nums[i]
            if i > 0:
                maxList[i]= max(nums[i],nums[i]*maxList[i-1],nums[i]*minList[i-1])
                minList[i]= min(nums[i],nums[i]*maxList[i-1],nums[i]*minList[i-1])
                
                multiper = max(maxList[i],multiper)
                
        return multiper
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 找出一个序列中乘积最大的连续子序列(至少包含一个数)。 样例比如, 序列 [2,3,-2,4] 中乘积最大的子序列...
    六尺帐篷阅读 579评论 0 1
  • 找出一个序列中乘积最大的连续子序列(至少包含一个数)。 样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序...
    Arnold134777阅读 543评论 0 1
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,869评论 0 33
  • 在我们教师办公室,讨论得最多的,你知道是什么吗?是一个孩子的性格,在被老师批评之后,在和同学起冲突后,恢复的速...
    李Polly阅读 2,941评论 1 1
  • 人生聚散无常,起落不定,别人再好,也是别人。自己再不堪,也是自己,做自己的`瓶子'包容自己, 爱谁不爱谁,旗帜...
    江村塘影阅读 247评论 0 1

友情链接更多精彩内容