152. Maximum Product Subarray
来源:互联网 发布:阿里云的免费空间 编辑:程序博客网 时间:2024/04/26 05:52
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
.
Solution 1
public static int maxProduct(int[] nums) {if (nums.length == 0) {return 0;}int maxherepre = nums[0];int minherepre = nums[0];int maxsofar = nums[0];int maxhere, minhere;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]);maxsofar = Math.max(maxhere, maxsofar);maxherepre = maxhere;minherepre = minhere;}return maxsofar;}
Solution 2 Same as above
public int maxProduct3(int[] nums) { int result = nums[0]; int max = nums[0]; int min = nums[0]; for(int i = 1; i < nums.length; i++){ int temp = max; max = Math.max(Math.max(max * nums[i], min * nums[i]), nums[i]); min = Math.min(Math.min(temp * nums[i], min * nums[i]), nums[i]); if(max > result){ result = max; } } return result; }Solution 3
public static int maxProduct2(int[] nums) {int n = nums.length;int r = nums[0];for (int i = 1, imax = r, imin = r; i < n; i++) {if(nums[i] < 0){int temp = imax;imax = imin;imin = temp;}imax = Math.max(nums[i], imax * nums[i]);imin = Math.min(nums[i], imin * nums[i]);r = Math.max(r, imax);}return r;}
0 0
- 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
- Simulator,Scheduler和时间
- GlobalValue
- Boost MPI scatter
- 【HTML5】基础知识
- java 利用*号打印三角形
- 152. Maximum Product Subarray
- 个人进阶之路——自定义控件(5)
- Activity和AppCompatActivity的区别
- 尝试在非root用户下进行nginx的反向代理-1
- c++11对多线程的典型用法
- x264源码分析与应用示例(三)——浅谈码率控制的优化问题
- spark概览
- [POJ 1836]Alignment[DP][LIS]
- 229. Majority Element II