這是我的面試經歷以及整理的相關面試高頻題目,希望對大家有幫助。面試集錦
老規矩,不白嫖,點贊再看!
一 題目
給定一個整數數組 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 關注我和專欄,讓我們成爲好基友。