//数组中子数组的最大累乘积
public class MaxMutipleSubArr{
//获得最大的累乘积
public static double GetMaxMutiple(double[]arr)
{
if(arr==null||arr.length==0)
{
return -1;
}
double max=Double.MIN_VALUE;
double cur=1;
int i=0;
while(i<arr.length-1)
{
cur*=arr[i];
max=Math.max(max,cur);
cur=(cur<=0)?1:cur;
i++;
}
return max;
}
//获得最大的累乘积
public static double GetMaxMutiple02(double[]arr)
{
if(arr==null||arr.length==0)
{
return -1;
}
double max=1;
double min=1;
double maxEnd=1;
double minEnd=1;
double res=Double.MIN_VALUE;
for(int i=0;i<arr.length;i++)
{
maxEnd=max*arr[i];
minEnd=min*arr[i];
max=Math.max(Math.max(maxEnd,minEnd),arr[i]);//三种情况最大那个
min=Math.min(Math.min(maxEnd,minEnd),arr[i]);//三种情况最小那个
res=Math.max(max,res);
}
return res;
}
public static void main(String[]args)
{
//System.out.println("Hello");
double[]arr={-2.5,4,0,3,0.5,8,-1};
System.out.println(GetMaxMutiple(arr));
System.out.println(GetMaxMutiple02(arr));
}
}
数组中子数组的最大累乘积

最新推荐文章于 2024-03-30 19:57:16 发布