题解 | #和为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;
    }
全部评论

相关推荐

昨天 16:50
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务