力扣.——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;
    }

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

相关推荐
掂过碌蔗呀11 分钟前
Java调用C/C++那些事(JNI)
java·c语言·c++
兑生15 分钟前
力扣面试150 串联所有单词的子串 分组滑动窗口
算法·leetcode·面试
٩( 'ω' )و26017 分钟前
二叉树02(数据结构初阶)
开发语言·数据结构·c++·算法
ALISHENGYA41 分钟前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
数据结构·c++·算法·信奥赛
ephemerals__1 小时前
【c++丨STL】map/multimap的使用
开发语言·c++
飞yu流星1 小时前
c++ vector
开发语言·c++
豪斯有话说1 小时前
C++入门基础篇:域、C++的输入输出、缺省参数、函数重载、引用、inline、nullptr
c++
移动中的鸭子1 小时前
程序设计:排版、检验报告的上下标解决几种办法
算法·程序设计
生活很暖很治愈1 小时前
《C 语言与冒泡排序算法的碰撞》
c语言·算法
小志biubiu1 小时前
技术洞察:C++在后端开发中的前沿趋势与社会影响
开发语言·c++·笔记·学习·区块链·c11