给定一个数组,值全是正数,请返回累加和为给定值k的最长子数组长度。

来源:互联网 发布:微信mac版 dmg 编辑:程序博客网 时间:2024/05/19 10:11
给定一个数组,值全是正数,请返回累加和为给定值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;    }
定义两个指针左,右,当sum<k时,右指针向右西东,len++,当sum>=k时,左指针右移,直到右指针到最后

阅读全文
0 0
原创粉丝点击