程式設計師面試題精選(03)-求子陣列的最大和
題目:輸入一個整形陣列,陣列裡有正數也有負數。陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。求所有子陣列的和的最大值。要求時間複雜度為O(n)。
例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,因此輸出為該子陣列的和18。
分析:本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本題在網路中廣為流傳,本題也順利成為2006年程式設計師面試題中經典中的經典。
如果不考慮時間複雜度,我們可以列舉出所有子陣列並求出他們的和。不過非常遺憾的是,由於長度為n的陣列有O(n2)個子陣列;而且求一個長度為n的陣列的和的時間複雜度為O(n)。因此這種思路的時間是O(n3)。
很容易理解,當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零,不然的話這個負數將會減少接下來的和。基於這樣的思路,我們可以寫出如下程式碼。
參考程式碼:
相關文章
- 求子陣列的最大和問題陣列
- 求子陣列的最大和陣列
- 《Cracking the Coding Interview程式設計師面試金典》----最大和子矩陣View程式設計師面試矩陣
- 高階前端程式設計師面試問題與答案【精選9道】前端程式設計師面試
- 程式設計求一維陣列中最大和最小的元素值程式設計陣列
- Google 面試題 | 3個非重複子陣列最大和Go面試題陣列
- 名企面試官精講典型程式設計題之資料結構陣列篇面試程式設計資料結構陣列
- 程式設計師面試,我最喜歡的10個問題程式設計師面試
- 10個我最喜歡問程式設計師的面試問題程式設計師面試
- PHP程式設計師面試題PHP程式設計師面試題
- 程式設計師的macOS系列:精選MacApp程式設計師MacAPP
- [程式猿面試題精選100題]10.排序陣列中和為給定值的兩個數字面試題排序陣列
- 牛客題霸--連續子陣列的最大和陣列
- 連續子陣列的最大和陣列
- VUE的面試題分享-好程式設計師Vue面試題程式設計師
- iOS面試題精選iOS面試題
- 一維子陣列最大和陣列
- [每日一題] 第十五題:連續子陣列的最大和每日一題陣列
- Java程式設計師面試必須要掌握的面試題Java程式設計師面試題
- Java程式設計師面試題及解答Java程式設計師面試題
- 智力題(程式設計師面試經典)程式設計師面試
- 程式設計師50+Java面試題程式設計師Java面試題
- JAVA程式設計師面試題庫分享Java程式設計師面試題
- 程式設計師面試 刷題推薦程式設計師面試
- 程式設計師面試邏輯題解析程式設計師面試
- “火柴棍式”程式設計師面試題程式設計師面試題
- Java程式設計師集合框架面試題Java程式設計師框架面試題
- 面試題:陣列按列排序的問題面試題陣列排序
- 前端中的簡單程式設計題-陣列(2)前端程式設計陣列
- 前端中的簡單程式設計題-陣列(1)前端程式設計陣列
- Java陣列03:陣列使用Java陣列
- Java程式設計師的10道XML面試題Java程式設計師XML面試題
- java程式設計師最難面試之“今日頭條”Java程式設計師面試
- golang 陣列面試題Golang陣列面試題
- 劍指offer-例題 連續子陣列的最大和陣列
- 糟糕的程式設計師面試程式設計師面試
- 10月11日雲棲精選夜讀|演算法和程式設計面試題精選TOP50!(附程式碼+解題思路+答案)演算法程式設計面試題
- 程式設計師面試題!親身經歷!程式設計師面試題