code 560

不说废话,直接刷题。用前缀和加上哈希表,时间复杂度可以控制在 O(N)O(N)O(N).哈希表是用 O(1)O(1)O(1) 的时间做到查询。哈希表和字典差不多,或者和直接搜索差不多,但是效率非常快,就是常数时间就可以查找成功。keykeykey 是前缀和,valuevaluevalue 是该前缀和出现的次数。
preSumj−1=preSumi−kpreSumj-1=preSumi-kpreSumj−1=preSumi−k

我们就是查询 preSumj−1preSumj-1preSumj−1 是否存在,如果存在,我们就把这个答案累加到计数器里面。

cpp 复制代码
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int, int> mp;
        mp[0] = 1;
        int preSum = 0;
        int count = 0;
        for ( auto& num: nums ) {
            preSum += num;
            if ( mp.find( preSum - k ) != mp.end() ) {
                count += mp[ preSum - k ];
            }
            mp[preSum]++;
        }
        return count;
    }
};
相关推荐
shehuiyuelaiyuehao8 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
203号居民9 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾10 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP10 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
ZhouDevin11 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉
Tim_1011 小时前
【LeetCode】29、两数相除
算法·leetcode·职场和发展
纪念 22911 小时前
数据结构排序(三)
数据结构
船厂电气自动化ai大模型12 小时前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
余额瞒着我当琳12 小时前
算法修炼 chapter 2 双指针进阶、盛最多水的容器、有效三角形的个数、两数之和、三数之和、四数之和
算法
你压到我腿毛了66612 小时前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法