码迷,mamicode.com
首页 > 其他好文 > 详细

Maximum Product Subarray 最大连续乘积子集

时间:2014-10-21 22:52:27      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   sp   div   on   

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.

此题要求是要在一个无需的数组找出一个乘积最大的连续子数组

例如[2,3,-2,4],因为可能有负数,可以设置两个临时变量mint和maxt,mint存储遇到负数之后相乘变小的乘积,maxt用来存储大的乘积。

比如2*3=6,此时,mint = maxt = 6,当下次遇到-2时,mint = maxt = -12,此时乘积-12小于-2,则应使maxt = -2。为避免下个数还是负数,应使mint不变,若下次遇到负数,则乘积比maxt大,然后交换……

具体看代码:

 1 public class Solution {
 2     public int maxProduct(int[] A) {
 3         int n = A.length;
 4         int mint = 1;
 5         int maxt = 1;
 6         
 7         int maxvalue = A[0];
 8         for(int i =  0 ; i < n ; i++){
 9             if(A[i] == 0){
10                 mint = 1;
11                 maxt = 1;
12                 if(maxvalue < 0)
13                     maxvalue = 0;
14             }else{
15                 int curmax = maxt * A[i];
16                 int curmin = mint * A[i];
17                 
18                 maxt = curmax > curmin ? curmax : curmin;
19                 mint = curmax > curmin ? curmin : curmax;
20                 
21                 if(maxt < A[i])
22                     maxt = A[i];
23                     
24                 if(mint > A[i])
25                     mint = A[i];
26                     
27                 if(maxt > maxvalue)
28                     maxvalue = maxt;
29             }
30         }
31         
32         return maxvalue;
33         
34     }
35 }

 

Maximum Product Subarray 最大连续乘积子集

标签:style   blog   color   io   ar   for   sp   div   on   

原文地址:http://www.cnblogs.com/fanchangfa/p/4041567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!