解析:方法一:迭代 方法二:DP
class Solution {
public int maxSubArray(int[] nums) {
/* //方法一:迭代
int maxRes = nums[0], currTotal = nums[0];
for (int i = 1; i < nums.length; i++) {
if (currTotal < 0) {
currTotal = 0;
}
currTotal += nums[i];
maxRes = Math.max(maxRes, currTotal);
}
return maxRes;*/
//方法二:DP
int[] dp = new int[nums.length];
dp[0] = nums[0];
for (int i = 1; i < nums.length; i++) {
dp[i] = Math.max(nums[i]+dp[i-1], nums[i]);
}
//return Arrays.stream(dp).max().getAsInt();
return searchMaxArrayValue(dp);
}
int searchMaxArrayValue(int[] array){
int maxValue=array[0];
for (int i = 1; i < array.length; i++) {
if(array[i]>maxValue){
maxValue=array[i];
}
}
return maxValue;
}
}