力扣HOT100——560.和为k的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k的子数组的个数。

子数组是数组中元素的连续非空序列。

示例 1:

复制代码
输入:nums = [1,1,1], k = 2
输出:2

思路:

前缀和+哈希。我们可以先利用一个数组s存储原数组的前缀和,在遍历s的时候利用一个哈希tmp来记录当前元素si出现的次数,同时寻找它们tmp中是否存在是si-k,如果存在,则答案ans加上tmps\[i-k],即si-k此前出现的次数。

cpp 复制代码
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
       int ans=0;
       vector<int> s(nums.size()+1);
       for(int i=0;i<nums.size();i++)
       {
        s[i+1]=s[i]+nums[i];
       }
       unordered_map<int,int> tmp;
       for(int x:s)
       {
        
        ans+=tmp.contains(x-k)?tmp[x-k]:0;
        tmp[x]++;
    
       }
       return ans;
    }
};
复杂度分析
  • 时间复杂度:O(n),其中 n 为 nums 的长度。
  • 空间复杂度:O(n)。
相关推荐
艾莉丝努力练剑13 分钟前
【AI大模型接入SDK】ChatServer接口测试
网络·c++·人工智能·学习·ai·大模型·sdk
D e re k ZH23 分钟前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++
hahaha601625 分钟前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
文丑颜不良啊27 分钟前
LeetCode1541~1560题目解析
java·leetcode
YSL07012432 分钟前
一文通关-----树和二叉树
数据结构·算法
小糯米60132 分钟前
数据结构 数组与链表 内存与缓存
数据结构
青少儿编程课堂34 分钟前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
eggwyw37 分钟前
C++深入浅出探索数据结构的原理
开发语言·c++
eggwyw39 分钟前
C++深入浅出讲解希尔排序算法的实现
开发语言·c++
computersciencer40 分钟前
应用贝叶斯公式:迟到了,那坐的是哪种交通工具呢?
算法·机器学习·概率论