数组前缀和

前缀和

前缀和就是指前缀的和,例如在数组中,从开始到 i 就是到 i 的前缀和。前缀和一般用来求中间连续某一段的和,例如sumi - sumj - 1就可以求出j 到 i 这一段的和。

在这一道题目里面,中间某一段连续子数组和为k,意思即为sumi - sumj - 1 = k,也即sumi - k = sumj - 1,所以当我们求每一个的前缀和的时候,只需要统计对应的sumj - 1个数即可。sum对应的个数用map存储。注意map0 = 1,即本身本来有一个。

cpp 复制代码
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int ans = 0;
        unordered_map<int, int> mp;
        int pre = 0;
        mp[0] = 1;
        for (int i : nums) {
            pre += i;
            ans += mp[pre - k];
            ++mp[pre];
        }
        return ans;
    }
};

当然还有二维数组的前缀和,不过大致原理就是这样,通过两个前缀和求中间的和。

相关推荐
念恒123062 小时前
网络基础
linux·网络·c++
mct1232 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
ziguo11222 小时前
Windows API 文件操作超级指南——从入门到内核
c++·windows·visualstudio
alphaTao4 小时前
LeetCode 每日一题 2026/7/20-2026/7/26
算法·leetcode
zhangfeng11334 小时前
Ascendc 大语言模型框架 AscendCraft 和pypto 的区别 pypto生成算子c++源码吗
c++·人工智能·语言模型·算子开发
一只小灿灿5 小时前
C++ 修饰符全面详解
开发语言·c++
圣保罗的大教堂5 小时前
leetcode 3514. 不同 XOR 三元组的数目 II 中等
leetcode
code_pgf5 小时前
C/C++ 中 `typedef` 关键字详解
c语言·c++
会周易的程序员6 小时前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm
2023自学中6 小时前
imx6ull 开发板 贪吃蛇, C++11 SDL2 无硬件GPU优化版
linux·c++