LeetCode Maximum Product Subarray
来源:互联网 发布:nestopia mac 手柄 编辑:程序博客网 时间:2024/06/06 15:51
LeetCode解题之Maximum Product Subarray
原题
在一个数组中找出一个子数组,使得子数组中的数的乘积最大。
注意点:
- 数字可能为负数
- 给定的数组不为空
例子:
输入: nums = [2,3,-2,4]
输出: 6
解题思路
比较典型的动态规划题目,需要注意负数乘以负数为正数,所以要同时记录最大局部最优解和最小局部最优解。递推关系式为:
temp = positivepositive = max(num, positive * num, negative * num)negative = min(num, temp * num, negative * num)
变量命名有点问题,positive指局部最大乘积(不一定是正数),negative指局部最小乘积(也不一定是负数)。
AC源码
class Solution(object): def maxProduct(self, nums): """ :type nums: List[int] :rtype: int """ positive, negative = nums[0], nums[0] result = nums[0] for num in nums[1:]: positive, negative = max(num, positive * num, negative * num), min(num, positive * num, negative * num) result = max(result, positive) return resultif __name__ == "__main__": assert Solution().maxProduct([2, 3, -2, 4]) == 6
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- Maximum Product Subarray 【LeetCode】
- [LeetCode] Maximum Product Subarray
- leetcode-Maximum Product Subarray
- Maximum Product Subarray -- LeetCode
- LeetCode-Maximum Product Subarray
- [LeetCode]Maximum Product Subarray
- [LeetCode]Maximum Product Subarray
- 【LeetCode】Maximum Product Subarray
- leetcode:Maximum Product Subarray
- leetcode: Maximum Product Subarray
- Leetcode: Maximum Product Subarray
- [LeetCode]Maximum Product Subarray
- Leetcode Maximum Product Subarray
- [Leetcode]Maximum Product Subarray
- Leetcode--Maximum Product Subarray
- Maximum Product Subarray [leetcode]
- LeetCode | Maximum Product Subarray
- LeetCode-Maximum Product Subarray
- UVA 11865 Stream My Contest(最小树形图+二分)
- 关于Makefile的学习
- Android拼图游戏
- WEB 前端学习
- -i++与i的值问题
- LeetCode Maximum Product Subarray
- SQLite 的错误码
- 如何在django里使用静态文件
- c++拾遗-----函数探幽
- Arduino 和 MQ-135 空气污染气体传感器 实验
- C++实验6—数组操作
- LeetCode7--Reverse Integer
- js回调函数(callback)
- 【杭电-oj】-2042-不容易系列之二(类似于猴子吃桃的爷爷和羊)