程式設計之美2 14 求陣列的子陣列之和的最大值

2022-08-30 10:39:14 字數 868 閱讀 7425

問題描述:

乙個有n個整數元素的一維陣列(a[0], a[1], a[2],...,a[n-1]),這個陣列當然有很多子陣列,那麼子陣列之和的最大值是什麼呢?

解法:1. 暴力解法-------o(n^3)

2. 改進版暴力解法-------o(n^2)

*3. 分治演算法-------o(nlogn)(暫時未去實現)

4. 陣列間關係法-------o(n)

具體思路和**:

1.暴力解法

思路:sum[i,...,j]為陣列第i個元素到第j個元素的和,遍歷所有可能的sum[i,...,j]。

**:

1

int maxsum1(int a, intn)2

13if(sum >max)

14 max =sum;15}

16return

max;

17 }

2. 改進版暴力解法

思路:從上面的**我們可以發現sum[i,...,j] = sum[i,...,j-1] + a[j]

因此,最後乙個迴圈可以省去。

**:

1

int maxsum2(int a, intn)2

14}15return

max;

16 }

*3. 分治演算法(待更新)

4. 陣列間關係法

(1):當i=j=0時,元素a[0]本身構成和最大的一段;

(2):當0=i

(3):當0

**:

1

int maxsum3(int a, intn)2

14return

max;

15 }

程式設計之美2 14 求陣列的子陣列之和的最大值

問題描述 乙個有n個整數元素的一維陣列 a 0 a 1 a n 1 它包含很多子陣列,求子陣列之和的最大值,當陣列元素全部為負的時候,有兩種處理辦法,第一種是返回0,第二種是返回陣列中最大的負數。解法1 使用暴力法,假設最大的一段陣列為a i a j 則對i 0 n 1 j i n 1,遍歷一遍,求...

程式設計之美2 14 求陣列的子陣列之和的最大值

這是乙個在面試中出現概率很高的一道題目,就拿我來說吧,面試了5家公司中,兩家公司問了這道題目,可見,這道題目是非常經典的。解題思想也不是很難,我熟悉的有 兩種解題辦法 1.一直連加,終止當前序列的條件是連加的和是負數 因為,乙個數加上乙個負數之後肯定是沒有原來的數值大,所以,這肯定是沒有意義的,最終...

程式設計之美 2 14 求陣列的子陣列之和的最大值

這個以前寫過,見求陣列的最長子陣列之和的最大值 這裡說一下後面擴充套件題目。1.簡述 1 如果陣列首尾相連,即允許找到一組數字 a i a n 1 a 0 a j 請使其和最大,怎麼辦?2 如果題目要求返回最大子陣列的位置,演算法應該如何改變?還能保持o n 的複雜度麼?2.思路 第乙個問題,書上給...