最大子序和(贪心)
給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。
這道題目類似于貪心算法之買賣股票的最佳時機 II,但是屬于升級版本,因為這道題中子數組要求連續,你得確定一段數組是它內部元素相加值最大。
當然,我做任何題目第一時間會想到暴力解法,因為自己目前做的題目遠遠不夠,不足以讓我在第一時間反應出來什么類型用什么算法,既然如此,不如先考慮能不能暴力破解。
暴力破解思路很簡單:
設置一個數組用來保存當前最大的情況,然后設置雙循環獲得全部子數組后,與保存的數組比較后保存更大的,直到遍歷完。
暴力法思路往往最直接,但缺點是效率低下,有很多無效運算。
貪心算法:
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。
本題貪心思路在于:需要設定一個目前最大值和全局最大值。目前最大值會不斷加上數組后一個元素,然后目前最大值和全局最大值不斷進行更新。最后遍歷完后,返回全局最大值。
代碼如下:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-subarray
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
總結
- 上一篇: python模块函数使用手册中文版_Py
- 下一篇: 如何用PPT编制方案 (4)PPT