zoukankan      html  css  js  c++  java
  • 乘积最大子数组-python

    问题:

    # 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),
    # 并返回该子数组所对应的乘积。
    #
    #
    #
    # 示例 1:
    #
    # 输入: [2,3,-2,4]
    # 输出: 6
    # 解释: 子数组 [2,3] 有最大乘积 6。

    方法:动态规划,构建两个dp,既max_dp, min_dp,存储连续的最大乘积和最小乘积,因为会包括负数情况,

    如:[-2,5,-7]

    max_dp = [-2, 5, 70]

    min_dp = [-2, -10, -35]

    参考代码:

    class Solution:
        def maxProduct(self, nums: List[int]) -> int:
            max_dp = copy.deepcopy(nums)
            min_dp = copy.deepcopy(nums)
            for i in range(1, len(nums)):
                max_dp[i] = max(nums[i], nums[i]*max_dp[i-1], nums[i]*min_dp[i-1])
                min_dp[i] = min(nums[i], nums[i]*min_dp[i-1], nums[i]*max_dp[i-1])
            return max(max(max_dp), max(min_dp))
    时刻记着自己要成为什么样的人!
  • 相关阅读:
    repair table
    利用逻辑备份恢复部分库表
    Web框架理解
    BootStrape基础使用
    jQuery入门
    BOM操作
    DOM操作
    day12 css样式
    JavaScript基础
    day11 前端知识简单总结
  • 原文地址:https://www.cnblogs.com/demo-deng/p/15418021.html
Copyright © 2011-2022 走看看