152. Maximum Product Subarray
来源:互联网 发布:淘宝牙齿矫正器有用吗 编辑:程序博客网 时间:2024/06/08 03:35
Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4]
,
the contiguous subarray [2,3]
has the largest product = 6
.
对于这道题,我最初的分析是利用动态规划或者滑动窗口去实现,后来我没有找到状态转移方程,而对于滑动窗口也没有找到如何将窗口进行滑动的规律,无奈只有看别人的解决方案来学习,最后知道这道题是利用动态规划的方式,用动态规划的方法,就是要找到转移方程式,也叫动态规划的递推式,动态规划需要我们维护两个变量,局部最优和全局最优,对于Maximum SubArray的情况,如果遇到负数,想加之后的值肯定比原值小,但可能比当前值大,也有可能小,所以,对于相加的情况,只要能够处理局部最大和全局最大的关系就可以,但是在本题中存在这种情况,就是两个负数相乘最终可以得到一个正数,因此我们还需要保留局部最小值,因为局部最小值为负值的情况下,当遇到另外一个负值的时候,有可能成为最大值的因子,代码如下:
public int maxProduct(int[] nums) {
// 特殊情况处理
if(nums == null || nums.length == 0){
return 0;
}
int localMin = nums[0], localMax = nums[0], globalMax = nums[0];
for(int i = 1; i < nums.length; i++){
int tempNum = localMin;
localMin = Math.min(Math.min(nums[i], nums[i] * localMin), nums[i] * localMax);
localMax = Math.max(Math.max(nums[i], nums[i] * localMax), nums[i] * tempNum);
globalMax = Math.max(localMax, globalMax);
}
return globalMax;
}
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 【WCF】HTTP 无法注册 URL 进程,不具有此命名空间的访问权限
- dpi
- Thread+IO文件的加密解密
- 荒岛求生第七关
- iOS 中添加info.plist 中 Required device capabilities的作用
- 152. Maximum Product Subarray
- 第十五周练习-- 按长度截断
- 全面解析Notification
- cocos2d-x 关于websocket
- 博客第一天
- linux 账号和群组
- js如何往数组Array中添加元素
- 【MVP】入门级写法(持续更正补充)
- Android Logger开源库的使用