1. 计算出前缀和,两个前缀和之间的差值即为子数组的和。
  2. 遍历两个点,不断的更新ret,也就是两个点之间的长度。
  3. 在遍历的时候,一层循环只用遍历到n-ret,因为j-i的长度最大必大于ret,二层循环从i+ret+1 遍历到n,j-i 的长度也要大于ret
        // write code here
        int n = arr.size();
        vectorpre_sum(n+1,0);
        for(int i=0;i<n;i++){
            pre_sum[i+1] = pre_sum[i]+arr[i];
        }
        int ret = 0;
        for(int i=0;i<=n-ret;i++){
            for(int j=i+ret+1;j<=n;j++){
                if(k==pre_sum[j]-pre_sum[i]){
                    ret = max(j-i,ret);
                }
            }
        }
        return ret==0?0:ret;
    }