问题描述:
问题链接:152 Maximum Product Subarray
在经典的算法解析中, 有关的分治和动态规划的,经典题型之一就是求最大子段和, 这道题就是他的变形:求最大子段积;
这个问题的核心思路与解决最大子段和相同, 但是唯一需要注意的就是负数的情况。
每次在比较当前最大结果的同时,也需要保存当前最小结果,所以每个当前点i处的取值, 就是从当前值nums[i], 和cur_max+nums[i],
cur_min+nums[i]三者中取极值:
每次的取值递推路径如上所示, 应该还算清晰。
以下是code,因为java没有类似python的多重赋值的功能,(类似 valueA, valueB = expressionA(), expressionB());所以每次依靠多余的两只临时变量
保存临时最大最小值, 否则当执行是数值会被改变。