public static int longestSubArrayInPosArrary(int[] arr, int aim){
if (arr == null || arr.length ==0 || aim <= 0) return 0;
int left = 0;
int right = 0;
int sum = arr[0];
int res = 0;
while (right < arr.length) {
if (sum == aim){
res = Math.max(res, right - left + 1);
right++;
if ( right == arr.length) break;
sum += arr[right];
}else if (sum < aim){
right ++;
if ( right == arr.length) break;
sum += arr[right];
}else {
sum -= arr[left];
left++;
}
}
return res;
}
两个指针,构成一个窗口,然后向右滑动
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。