题解 | #和为K的连续子数组#

和为K的连续子数组

https://www.nowcoder.com/practice/704c8388a82e42e58b7f5751ec943a11

  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;
    }
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务