力扣.——560. 和为 K 的子数组

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -107 <= k <= 107

本题使用前缀和可以解答~

cpp 复制代码
 int sum = 0; // 全局变量,用于记录和为k的子数组的个数
    int subarraySum(vector<int>& nums, int k) {
        int sumCount = 0; // 用于记录和为k的子数组的个数
        vector<int> sums(nums.size() + 1,0);      // 初始化前缀和数组,大小为nums.size()+1,方便计算
        sums[0] = 0;

        // 计算前缀和
        for (int i = 0; i < nums.size(); i++) {
            sums[i+1] = nums[i] + sums[i];
        }

        for(int i=0;i<nums.size();i++){
            for(int j=i;j<nums.size();j++){
                if(sums[j+1]-sums[i]==k)sum++;
            }
        }
        return sum;
    }

简单的前缀和就可以解决了,当然我看别人还用到了哈希表来处理,我这里就不展示了,感兴趣的可以再研究研究~

相关推荐
【 】42311 小时前
C++&STL(Standard Template Library,标准模板库)
java·开发语言·c++
Wect11 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·算法·typescript
一只牛_00711 小时前
pthread亲和性继承的一个坑:main绑核让整个进程退化到单核
c++
糖果店的幽灵11 小时前
决策树详解与sklearn实战
算法·决策树·sklearn
Lewiis11 小时前
趣谈排序算法
算法·排序算法
ComputerInBook11 小时前
数字图像处理(4版)——第 8 章——图像压缩与水印(上)(Rafael C.Gonzalez&Richard E. Woods)
人工智能·算法·计算机视觉·图像压缩·图像水印
前端百草阁11 小时前
【吃透 Promise】从基础到面试高频(手写 + 输出题 + 原理)
okhttp·面试·职场和发展
刀法如飞12 小时前
Python列表去重:从新手三连到高阶特技,20种解法全收录
python·算法·编程语言
minji...12 小时前
算法题 动态规划
算法·动态规划
Mr.Rice.Fool12 小时前
rust面试经验1
后端·面试·职场和发展·rust