给定一个数组,值全是正数,请返回累加和为给定值k的最长子数组长度。
定义两个指针左,右,当sum<k时,右指针向右西东,len++,当sum>=k时,左指针右移,直到右指针到最后public static int getMaxLength(int[] arr,int k){ if (arr == null || arr.length == 0) { return 0; } int left=0; int right=0; int sum=arr[0]; int len=0; while (right < arr.length) { if (sum == k) { len=Math.max(len,right-left+1); sum-=arr[left++]; } else if (sum < k) { right++; if (right == arr.length) { break; } sum+=arr[right]; }else { sum-=arr[left++]; } } return len; }