资讯动态

LeetCode 子数组最大乘积题解

发布时间:2026/8/17 0:51:33 来源:尧图企业网站定制
LeetCode 子数组最大乘积题解题目描述给定一个浮点数数组 nums返回子数组的最大乘积。示例输入nums [2.0, 3.0]输出6.0解题思路方法分治思路使用分治思想解决最大乘积问题。最大乘积可能来自全部正数、全部负数偶数个、或者包含0。递归计算左右两部分的最大乘积。复杂度分析时间复杂度O(n log n)。空间复杂度O(log n)。代码实现def max_product(nums): def helper(left, right): if left right: return nums[left], nums[left], nums[left], nums[left] mid (left right) // 2 min1, max1, min2, max2 helper(left, mid) min3, max3, min4, max4 helper(mid 1, right) min_product min(min1 * min3, min1 * max3, max1 * min3, max1 * max3) max_product max(max1 * max4, max1 * min4, min1 * max4, min1 * min4) return min(min_product, min2, min4), max(max_product, max2, max4), min(min1, min2, min3, min4), max(max1, max2, max3, max4) return helper(0, len(nums) - 1)[1] # 测试 def test_max_product(): nums [2.0, 3.0] print(max_product(nums)) # 输出6.0 if __name__ __main__: test_max_product()总结子数组最大乘积是分治思想的典型应用递归计算左右两部分的最大乘积。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价