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

和为K的连续子数组

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

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * max length of the subarray sum = k
     * @param arr int整型vector the array
     * @param k int整型 target
     * @return int整型
     */
    int maxlenEqualK(vector<int>& arr, int k) {
        unordered_map<int, int>dic;
        vector<int> preSum(arr.size() + 1, 0);
        dic[preSum[0]] = 0;
        int res = 0;
        //前缀和相同的只保存前面的索引值
        for (int i = 1; i <= arr.size(); ++i) {
            preSum[i] = preSum[i - 1] + arr[i - 1];
            if (dic.count(preSum[i] - k)) {
                res = max(res, i - dic[preSum[i] - k]);
            }
            if (dic.count(preSum[i])) {
                continue;
            } else {
                dic[preSum[i]] = i;
            }
        }
        return res;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 14:10
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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