LC053-最大子序和
生活随笔
收集整理的這篇文章主要介紹了
LC053-最大子序和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
53. 最大子序和
給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。方法一:動態規劃
動態規劃的是首先對數組進行遍歷,當當前最大連續子序列和為sum,結果為ans
如果sum > 0,則說明sum對結果有增益效果,則sum保留并加上當前遍歷數字
如果 sum <= 0,則說明 sum 對結果無增益效果,需要舍棄,則 sum 直接更新為當前遍歷數字
每次比較 sum 和 ans的大小,將最大值置為ans,遍歷結束返回結果
時間復雜度:O(n)
class Solution {public int maxSubArray(int[] nums) {int ans = nums[0];int sum = 0;for(int num: nums) {if(sum > 0) {sum += num;} else {sum = num;}ans = Math.max(ans, sum);}return ans;} }方法二:分治法
分治法
總結
以上是生活随笔為你收集整理的LC053-最大子序和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux安装命令自动运行y,在Linu
- 下一篇: 数据库课程大作业——数据分析与数据管理系