[圖解leetcode高頻面試之數組系列]4 最大子序和

這是我的面試經歷以及整理的相關面試高頻題目,希望對大家有幫助。面試集錦

老規矩,不白嫖,點贊再看!

一 題目

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。

1 leetcode連接

原題連接

小藍一看,心想首先需要找到所有的子數組,然後對子數組求和,最後比較。不是很清楚?沒關係,下面具體闡述下!

2 題目解析

  • 因爲我們涉及到數組和的比較,假設數組第一個元素爲最終需要返回的值,定義爲result。
    在這裏插入圖片描述
  • 遍歷Nums尋找大於0的數,保留當前sum值並累加。如果當前數組元素num值小於0直接賦值給sum。

爲什麼尋找大於0?這是本題的關鍵。在此大家可以自行思考1分鐘!文後解答,這樣印象會更深刻哈。

  • 每次對當前的result值和sum值比較,將較大值賦值給result。
    result=max(sum,result)。

爲什麼判斷大於0?

  • 如果遍歷的數組元素全是負數(<0),我們就取最大的負數。(-1)+(-1)=-2,-2<-1.負數只會越加越小

  • 如果當前遍歷的數組和爲正數(>0),後面遇到一個負數就會導致原來的和變小,所以我們直接不要。

3 代碼實現

  • c++版本
    在這裏插入圖片描述
  • python版本
    在這裏插入圖片描述
  • java版本
    在這裏插入圖片描述

4 收尾

系列算法題均採用三種不同的語言實現,滿足不同小夥伴的需求。如有不對的地方希望小夥伴指出,感謝!

❤️ 看完三件事:如果您看完有一點點收穫,快速迎娶白富美方式:
1 關注公衆號「我是程序員小賤」,第一時間閱讀最新的文章,公衆號後臺回覆 [小天使] 送你 最新的編程技術資料。
2 點贊,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
3 關注我和專欄,讓我們成爲好基友。

發佈了34 篇原創文章 · 獲贊 65 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章