我有一个数组[1,2,3]和求和为4.因此所有连续的子数组都是[1],[1, 2] [2,3] ans [1,2,3]。因此,小于或等于总和的最大长度子数组为[1,2],长度为2.给定一个数组和一个和,找到最大长度小于总和的连续子阵列
我已经用以下方式找到所有的子数组,并检查子数组的总和如下。但是这种方法不适用于负数。 {1,2,1,1,3,-2,-3,7,9}; - 答:7
private static void maximumSubArray(int[] a, int sum) {
int start = 0;
int end =0;
int mylen =-1;
int subarrSum =0;
for(int i=0;i<a.length;i++){
subarrSum += a[i];
end++;
while(subarrSum > sum){
subarrSum-= a[start];
start +=1;
}
mylen = Math.max(mylen, end-start);
}
System.out.println(mylen + " -- My len");
}
“有没有更好的方法?”是。您可以在线性时间内搜索。 –
“,所以连续的子数组是”你忘了'[2]'和'[3]'。 –