通过参考白马负金羁的关于LeetCode#53暨最大连续子序列和问题博客了解到解答本题的思路。
以下是我的答案,共尝试2次:
class Solution {
public int maxSubArray(int[] nums) {
int leng=nums.length;
int sum=0;
int max=nums[0];
for(int i=0;i<leng;i++){
for(int n=i;n<leng;n++){
sum+=nums[n];
if(sum>max){
max=sum;
}
}
sum=0;
}
return max;
}
}
思路是:一开始,我想先按自己的方式计算,然后发现不知道如何统计默认数组有多少个子数组,然后发现必须先知道每个子数组,然后才能计算其内部的和,这是难以绕开的问题。我思考了一会儿想不出办法所以查了下,看到白马负金羁的关于这道题的讲解。参考了他的立最大值的flag,我将数组第一个数设为最大值的初值,然后我将数组第一个数用循环的方式分别计算前2个数的和、前3个数的和前4个数的和......直到整个数组的和;同时每个和与最大值进行比较,如果和比最大值大就将和的值赋给最大值。循环完毕后计算出第一个值在这个数组中所有的和,然后用同样的方法计算数组剩余的值,即可。