陣列中字陣列的最大累乘積

2021-08-14 14:34:12 字數 1019 閱讀 1855

【題目】

給定乙個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 然後就是考慮負數 在所分的每段裡計算乘積,如果負數個數為奇數,將最後出現的那段除掉,然後輸出最大值再比較 非常長 但是可以跑過 長的我自己都不想看,沒臉看,看不明白啊,娘的...