程式設計之美2 13 最大子陣列產品

2021-09-07 00:24:22 字數 1101 閱讀 3531

這個問題是目前正在尋求 n-1 最大的產品編號。該陣列的大小 n。它會存在 n 乙個 n-1 連續數。然後,我們需要找到乙個最大的產品。

事實上看到題目,感覺非常easy,迴圈走兩遍陣列就能夠得到結果,可是,那樣的話,複雜度是平方量級的,假設乙個陣列中元素非常多。那麼,時間效率上是不能接受的。所以,須要又一次思考問題。尋找簡潔的解法。

這裡。我們能夠利用輔助陣列的辦法,把須要乘在一起的數字儲存下來。單獨的放到陣列中,然後乘在一塊就能夠了。這樣說起來事實上不是那麼easy理解,我還是貼出**吧,裡面會有凝視。看完**也就清晰了:

函式宣告:

/*2.13 子陣列的最大乘積*/

ll dutmaxmultipleinarray(int*, int);

原始碼:

/*隨意n - 1個數的組合中乘積最大的一組*/

bool _dutmaxmultipleinarray = false;

ll dutmaxmultipleinarray(int* a, int size)

/*兩個輔助陣列,陣列元素儲存1 -- n - 1個數的乘積*/

ll* s = new ll[size];

ll* t = new ll[size];

ll maxvalue = 1 << 31;

s[0] = 1;

t[size - 1] = 1;

for (int i = 1; i < size; ++i)

s[i] = a[i - 1] * s[i - 1];

for (int j = size - 2; j >= 0; --j)

t[j] = a[j + 1] * t[j + 1];

ll* p = new ll[size];

for (int k = 0; k < size; ++k)

return maxvalue;

}

程式設計之美2 13 子陣列最大乘積

問題描述 給定乙個長度為n的整數陣列,只允許用乘法,不能用除法,計算任意 n 1 個數的組合乘積中最大的一組,並寫出演算法的時間複雜度。解法 1.暴力解法 o n 2 2.前字尾法 o n 3.統計法 o n 具體思路和 1.暴力解法 思路 利用兩層迴圈,依次刪掉乙個,其餘的做乘法,計算出最大的。1...

程式設計之美 2 13 子陣列的最大乘積

1.簡述 給定乙個長度為n的整數陣列,只允許用乘法,不能夠用除法,計算任意 n 1 個數的組合中乘積最大的一組,並寫出演算法時間複雜度。2.思路 題目中要求不能用除法,實際上就是否定了將所有數乘起來,然後分別去除每個數字的方法,實際上這種方法也不好實現,因為如果數字中有0的話,都乘起來就是0,還要除...

程式設計之美 2 13 子陣列的最大乘積

題目 乙個有n個數的整數陣列 取其中n 1個元素的子陣列 求子陣列的最大乘積 不能用除法。這道題自己沒有寫對,沒有考慮到負數的情況,只是單純的想去掉最小的數。但是若有負數 5 4 3 中 5 4 20更大。需要先統計正數 負數和0的個數,再分類討論。考察的其實就是細心和耐心。答案解法 int get...