陣列中子陣列的最大累乘積
給定乙個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...