配列[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");
}
「もっと良いアプローチはありますか?」はい。線形時間で検索することができます。 –
"なので、すべての連続したサブ配列は" Yougotgot [2] "と" [3] "です。 –