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

2021-06-27 19:20:54 字數 830 閱讀 9222

1.時間複雜度o(n^2)

2.時間複雜度o(n),組a[n],設去除第i個元素的乘積為a[0]*a[1]*…a[i-1] * a[i+1]*a[i+2]*…a[n-1],則可以寫出如下演算法滿足複雜度為ο(n)。  

設f[i]=a[0]*a[1]*…a[i], r[i]=a[i]*a[i+1]*…a[n]則p[i] = f[i-1]*r[i+1]。 3.

時間複雜度o(n),進一步減少計算量。子陣列最大乘積問題可以分為以下幾種情況。  

1.陣列中有多於乙個零則最大乘積為0;

2.陣列中只有乙個零,而有奇數個負數,則最大乘積必定為0;

3.陣列中只有乙個零,而有偶數個負數,則最大乘積為除去0的元素的乘積;  

4.陣列中沒有零,而有奇數個負數,則最大乘積為除去絕對值最小的負數的乘積;  

5.陣列中沒有零,而有偶數個負數,則最大乘積為除去最小的正數的乘積。

遍歷一遍陣列得到陣列中正數、負數,零的個數,以及絕對值最小的正數和負數

#include#include#includeusing namespace std;

long long levelone(int data,int maxsize)

else

else if(minpos > d[i]) //最小正數

}} if(n_zero==1 && n_neg%2==1)

else if(n_zero==1 && n_neg%2==0)

else if(n_zero==0 && n_neg%2==1)

else if(n_zero==0 && n_neg%2==0)

for(int i=0; i

《程式設計之美》讀書筆記

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

《程式設計之美》讀書筆記集錦

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

《程式設計之美》讀書筆記集錦

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...