【前缀合】Leetcode 和为k的子数组

题目解析

560. 和为 K 的子数组

在这里插入图片描述


算法讲解

前面滑动窗口里面有一道题和这个题很相似,它是求出和为k的最短子数组的长度,但是这道题不能使用滑动窗口,因为虽然找到一段子数组的和等于k,但是这道题里面存在0和负数,可能这一段区间里面还有一段子数组也等于k
因此需要使用前缀和算法,我们求出以i位置为结尾的前缀和,在这一段区间中寻找有没有前缀和 - k的区间

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int, int>Hash;
        int sum = 0;
        int ret = 0;
        Hash[0]++;
        for(auto& n : nums)
        {
            sum += n;  //此处计算的就是以i位置为结尾的前缀和
            if(Hash.count(sum - k))ret += Hash[sum - k];  //寻找这一段区间有没出现sum - k)
            Hash[sum]++;
        }
        return ret;
    }
};

相关推荐

  1. leetcodeK数组

    2024-04-12 10:38:02       35 阅读
  2. K数组LeetCode 560)

    2024-04-12 10:38:02       39 阅读
  3. leetcode560k数组

    2024-04-12 10:38:02       40 阅读
  4. LeetCode 560 K数组

    2024-04-12 10:38:02       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 10:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 10:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 10:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 10:38:02       20 阅读

热门阅读

  1. svdpi.h源码

    2024-04-12 10:38:02       15 阅读
  2. ORACLE查看数据库中用户,用户创建修改

    2024-04-12 10:38:02       41 阅读
  3. 力扣爆刷第117天之CodeTop100五连刷71-75

    2024-04-12 10:38:02       18 阅读
  4. ChatGPT 写作利器:探索ChatGPT在论文写作中的应用

    2024-04-12 10:38:02       17 阅读
  5. Transformer介绍

    2024-04-12 10:38:02       19 阅读
  6. PHP学习

    PHP学习

    2024-04-12 10:38:02      41 阅读
  7. 计算机网络2

    2024-04-12 10:38:02       18 阅读
  8. (二)PostgreSQL常用的配置文件

    2024-04-12 10:38:02       37 阅读
  9. 深度学习笔记

    2024-04-12 10:38:02       14 阅读