给定一个数组,值全是正数,请返回累加和为给定值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; }
本文介绍了一个算法问题:如何找出一个正数数组中累加和等于给定值k的最长子数组长度。通过双指针技巧实现高效求解。
181

被折叠的 条评论
为什么被折叠?



