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

2021-10-10 11:39:32 字數 1113 閱讀 4276

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

給定乙個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(1)

o(1)

輸入描述:

第一行乙個整數n。表示陣列長度。

接下來一行n個浮點數表示陣列內的數

輸出描述:

輸出乙個浮點數表示答案,保留到小數點後兩位

示例1輸入

7

-2.5 4 0 3 0.5 8 -1

輸出
12.00
備註:

1 ⩽n

⩽105

1 \leqslant n \leqslant 10^5

1⩽n⩽10

5−100

ri

⩽100

-100 < arr_i \leqslant 100

−100

ri​⩽

100

− 10

22⩽保證

最後的答

案⩽10

22-10^ \leqslant 保證最後的答案 \leqslant 10^

−1022⩽

保證最後

的答案⩽

1022

題解:與最大子段和是同樣的思路,求出以每個位置結尾的所有子陣列的最大累乘積,挑出最大的即可。假設以位置 i-1 結尾的最小累乘積為 min ,最大累乘積為 max ,那麼以位置 i 結尾的最大累乘積有三種可能:

**:

#include

#include

using

namespace std;

intmain

(void

)return0*

printf

("%.2f\n"

, ret)

;}

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 輸入描述 第一行乙個...

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

題目 給定乙個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 mai...

獲取陣列中子串乘積的最大值

題目 給定乙個陣列,例如arr 那個8和4相乘得到32,是連續數相乘得到的最大值,得到該值即可。解答 注意此過程的三種情況即可,最大數成為最大,最小數變成最大,當前數最大。時間複雜度o n public static double getmax double arr double max arr 0...