152. Maximum Product Subarray最大乘积子数组/是否连续
[抄题]:
Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.
Example 1:
Input: [2,3,-2,4]
Output:6
Explanation: [2,3] has the largest product 6.
Example 2:
Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
Your input
[2,3,-2,4]
Your answer
24
Expected answer
6
[奇葩corner case]:
[思维问题]:
[英文数据结构或算法,为什么不用别的数据结构或算法]:
记忆化搜索的dp,划分型 kandane
[一句话思路]:
max = Math.max(max, max * nums[i]);是记忆化搜索,能保证全局最优解24;
maxhere = Math.max(Math.max(maxherepre * A[i], minherepre * A[i]), A[i]);保证二者之间相对较大,只能保证负号之前的局部最优解6
maxherepre = maxhere;
minhere用的是之前存好的maxherepre,不是改变后的maxhere。所以要提前存。[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
minhere用的是之前存好的maxherepre,不是改变后的maxhere。所以要提前存。
[复杂度]:Time complexity: O(n) Space complexity: O(1)
[算法思想:迭代/递归/分治/贪心]:
[关键模板化代码]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
[是否头一次写此类driver funcion的代码] :
[潜台词] :
Local optimal solution
class Solution {
    public int maxProduct(int[] nums) {
        //cc
        if (nums == null || nums.length == 0) return 0;
        //ini: 5 variables
        int maxHere = nums[0];
        int minHere = nums[0];
        int maxHerePre = nums[0];
        int minHerePre = nums[0];
        int result = nums[0];
        //calculate
        for (int i = 1; i < nums.length; i++) {
            maxHere = Math.max(Math.max(maxHerePre * nums[i], minHerePre * nums[i]), nums[i]);
            minHere = Math.min(Math.min(maxHerePre * nums[i], minHerePre * nums[i]), nums[i]);
            maxHerePre = maxHere;
            minHerePre = minHere;
            result = Math.max(result, maxHere);
        }
        //return
        return result;
    }
}
152. Maximum Product Subarray最大乘积子数组/是否连续的更多相关文章
- [leetcode]152. Maximum Product Subarray最大乘积子数组
		Given an integer array nums, find the contiguous subarray within an array (containing at least one n ... 
- leetcode 53. Maximum Subarray 、152. Maximum Product Subarray
		53. Maximum Subarray 之前的值小于0就不加了.dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值. 动态规划的方法: class Solution { public: ... 
- 152. Maximum Product Subarray - LeetCode
		Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的 ... 
- 求连续最大子序列积 - leetcode. 152 Maximum Product Subarray
		题目链接:Maximum Product Subarray solutions同步在github 题目很简单,给一个数组,求一个连续的子数组,使得数组元素之积最大.这是求连续最大子序列和的加强版,我们 ... 
- 【刷题-LeetCode】152 Maximum Product Subarray
		Maximum Product Subarray Given an integer array nums, find the contiguous subarray within an array ( ... 
- [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积
		Given an integer array nums, find the contiguous subarray within an array (containing at least one n ... 
- LeetCode 152. Maximum Product Subarray (最大乘积子数组)
		Find the contiguous subarray within an array (containing at least one number) which has the largest ... 
- C#解leetcode   152. Maximum Product Subarray
		Find the contiguous subarray within an array (containing at least one number) which has the largest ... 
- 152. Maximum Product Subarray(中等, 神奇的 swap)
		Find the contiguous subarray within an array (containing at least one number) which has the largest ... 
随机推荐
- 什么是pytorch(3神经网络)(翻译)
			神经网络 torch.nn 包可以用来构建神经网络. 前面介绍了 autograd包, nn 依赖于 autograd 用于定义和求导模型. nn.Module 包括layers(神经网络层), 以及 ... 
- Linux系统目录权限chmod误操作权限修复方法
			Linux中,如果意外误操作将/目录权限批量设置,比如chmod -R 777 / ,系统中的大部分服务以及命令将无法使用,这时候可以通过系统自带的getfacl命令来拷贝和还原系统权限,若是其他系统 ... 
- JavaScript开发中使用频率较高的一些方法
			1.填充字符串 ES7推出了字符串补全长度的功能.如果某个字符串不够指定长度,会在头部或尾部补全. String.prototype.padStart(maxLength, fillString=’ ... 
- 20175227张雪莹 2018-2019-2 《Java程序设计》第三周学习总结
			20175227张雪莹 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 (仅在此列举个性化学习总结) 一.编程语言的几个发展阶段. 1.面向机器语言:汇编语言 ... 
- Linux Bash Shell字符串分割substring等(转)
			原文https://blog.csdn.net/wuyinggui10000/article/details/52779364 脚本开发中遇到的问题是:原java中的字符串分割操作(substring ... 
- Redis管理:安全/耗时命令日志与命令监控/数据库管理工具
			1.安全管理 1)绑定指定IP Redis的安全设计是在“Redis运行在可信环境”这个前提之下的,在生产环境中建议通过应用程序连接Redis.Redis可以配置只接受来自指定IP的的请求,可通过修改 ... 
- dll 恐怖的代码调整
			总结一波这998的不得不提的调整代码的心得. 调整代码的背景:现有wps美化代码分散在各个插件里面,导致每次修改一小部分代码,都要全新编译,并且只能跟版本发,所以决定将wps的美化代码整合成一个插件d ... 
- uva-10245-分治
			题意:数组二维空间内的点,求最近的俩个点的距离. 根据x排序,求左部分的最近距离,右部分最近距离,然后以中点,当前距离为半径,计算所有的点距离. #include <string> #in ... 
- !!字体图标(iconfont、Fontello 、雪碧图生成工具。Glyphicons、fontawesome  等)。   图片压缩
			http://www.iconfont.cn/ 阿里巴巴矢量图标库 iconfont http://fontawesome.io fontawesome图标 http://www.bootcss.c ... 
- spring boot 错误处理之深度历险
			今天终于把 boot 的异常处理完全研究透了: boot提供了很多错误的处理工作.默认情况下,我们会看到一个whiteLabel(白标)的页面. 这个可能不是我们所需.因此我们需要定制.我于是做了个深 ... 
