题目: 给定一个数组,求最大的子数组
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
思路:动态规划问题
public int maxSubArray(int[] A) {
//n=数组的长度
int n = A.length;
//dp数组存放的是以i为结尾的最大子字符串
int[] dp = new int[n];//dp[i] means the maximum subarray ending with A[i];
初始化
dp[0] = A[0];
int max = dp[0];
//遍历一遍
for(int i = 1; i < n; i++){
//更新第i个,如果前一个数大于0就存加前一个数,否则存入0
dp[i] = A[i] + (dp[i - 1] > 0 ? dp[i - 1] : 0);
//取最大值
max = Math.max(max, dp[i]);
}
return max;
}