举例:{6,-3,-2,7,-15,1,2,2} 的连续子数组的最大和为8。从第0个开始,到第3个为止。
方法一和方法二都采用递归解法。
方法一:循环解法:
public class Solution {
public int FindGreatestSumOfSubArray(int[] arr) {
return func(arr);
}
private static int func(int[] arr) {
int max=arr[0];
int res=max;
for(int i=1;i<arr.length;i++) {
max=arr[i]>max+arr[i]?arr[i]:max+arr[i];
res=res>max?res:max;
}
return res;
}
}
方法二:递归解法:
public class Solution {
public int FindGreatestSumOfSubArray(int[] arr) {
return func(arr,1,arr[0],arr[0]);
}
private static int func(int[] arr,int index,int max,int res) {
if(index<arr.length) {
max=Math.max(max + arr[index], arr[index]);
res=Math.max(res, max);
return func(arr,index+1,max,res);
}
return res;
}
}