我有一個數組[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]'。 –