題目描述
給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。
代碼
class Solution {
public int maxSubArray(int[] nums) {
int ans=nums[0];
int sum=0;
for(int i=0;i<nums.length;i++)
{
if(sum>0)
{
sum+=nums[i];
}else {
sum=nums[i];
}
ans=Math.max(ans, sum);
}
return ans;
}
}
知識點
1、很明顯用動態規劃很好解決
2、動態規劃:
https://www.cnblogs.com/hithongming/p/9229871.html
思路
1、不斷向後找,如果當前和<0往後越加越小,所以直接從當前開始即讓sum=當前數
2、如果>0則往後加
3、上述步驟完成後,將ans與sum做比較取大