【題目】
給定乙個double型別的陣列arr,其中元素可正、可負、可0,返回子陣列累成的最大乘積。
例如,arr=[-2.5,4,0,3,0.5,8,-1],子陣列[3,0.5,8]累乘可以獲得最大的乘積12,故返回12
【要求】
時間複雜度o(n) 額外空間複雜度o(1)
【**】
public
static
void
main(string args) ;
system.out.println(maxproduct(arr));
} //陣列中字陣列的最大累乘積
public
static
double
maxproduct(double arr)
double min=arr[0];//以arr[i-1]結尾的最小累積
double max=arr[0];//以arr[i-1]結尾的最大累積
double res=arr[0];
double minend=0;//以arr[i]結尾的最小累積
double maxend=0;//以arr[i]結尾的最大累積
for(int i=1;i//以arr[i]結尾的最大累積有三種情況:
//1.最大的arr[i-1]累積*arr[i],正正相乘,如[3,4,5]
//2.最小的arr[i-1]累積*arr[i],負負相乘,如[-1,2,-3]
//3.當前arr[i],如[0.5,0.1,100]
max=math.max(arr[i], math.max(minend, maxend));
min=math.min(arr[i], math.min(minend, minend));
res=math.max(res, max);//選最大的以i結尾的最大累積
}return res;
}
陣列中子陣列的最大累乘積
陣列中子陣列的最大累乘積 給定乙個double型別的陣列arr,其中的元素可正 可負 可0,返回子陣列累乘的最大乘積。例如,arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12 要求 時間複雜度為o n o n o n 空間複雜度為o 1 o ...
CD 32 陣列中子陣列的最大累乘積
題目描述 給定乙個double型別的陣列arr,其中的元素可正 可負 可0,返回子陣列累乘的最大乘積。例如,arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12 要求 時間複雜度為o n o n 空間複雜度為o 1 o 1 輸入描述 第一行乙個...
乘積最大子陣列
leetcode 乘積最大子陣列 一開始我並沒有用dp 而是分情況討論的,即通過0將資料分為幾段,因為含有0的必定會使結果為0 然後就是考慮負數 在所分的每段裡計算乘積,如果負數個數為奇數,將最後出現的那段除掉,然後輸出最大值再比較 非常長 但是可以跑過 長的我自己都不想看,沒臉看,看不明白啊,娘的...