10.最大子陣列和
阿新 • • 發佈:2022-03-10
/*給你一個整數陣列 nums ,請你找出一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。 子陣列 是陣列中的一個連續部分。 思路 這道題用動態規劃的思路並不難解決,比較難的是後文提出的用分治法求解,但由於其不是最優解法,所以先不列出來 動態規劃的是首先對陣列進行遍歷,當前最大連續子序列和為 sum,結果為 ans 如果 sum > 0,則說明 sum 對結果有增益效果,則 sum 保留並加上當前遍歷數字 如果 sum <= 0,則說明 sum 對結果無增益效果,需要捨棄,則 sum 直接更新為當前遍歷數字 每次比較 sum 和 ans的大小,將最大值置為ans,遍歷結束返回結果 時間複雜度:O(n)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; } }