当前位置: 首页 > news >正文

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

解答

class Solution {
public:int subarraySum(vector<int>& nums, int k) {// 前缀和[0, x]:pfs[x] = nums[0] + nums[1] + ... + nums[x];//  ==> nums[x] = pfs[x] - pfs[x-1]// nums的第i到j项和为:// nums[i] + nums[i+1] + ....+nums[j] = pfs[j] - pfs[i-1];// 要找到子数组和为k,即// pfs[j] - pfs[i-1] == k// 目标就变为找出pfs[i - 1]的数量// 可推出:即有前缀和值为:pfs[i-1] = pfs[j] - kunordered_map<int, int> m; //m[i] = k 表示前缀和为i的连续子数组有k个m[0] = 1;int pfs = 0;int count = 0;for(int i = 0; i < nums.size(); ++i){pfs += nums[i]; // [0, i]范围元素的总和if(m.find(pfs - k) != m.end()) //{count += m[pfs - k];}m[pfs] += 1;}return count;}
};
http://www.lryc.cn/news/183379.html

相关文章:

  • 24 mysql all 查询
  • 【Excel单元格数值统计】python实现-附ChatGPT解析
  • 爬虫项目实战——爬取B站视频
  • 关掉在vscode使用copilot时的提示音
  • 【有限域除法】二元多项式除法电路原理及C语言实现
  • RabbitMQ核心总结
  • Unicode与UTF-8
  • A : DS单链表--类实现
  • React Hooks —— ref hooks
  • 泛型与Gson解析
  • c++使用ifstream和ofstream报错:不允许使用不完整的类型
  • 调试器通用波形显示工具
  • Linux中getopt函数、optind等变量使用详解
  • RDP协议流程详解(二)Basic Settings Exchange 阶段
  • 实时人脸五观检测:基于libfacedetection(CNN模型)
  • 图像和视频上传平台Share Me
  • JavaScript 在前端开发中有什么应用?
  • 【沐风老师】推荐2023年3DMAX的10个最佳插件!
  • 【visual studio 小技巧】项目属性->生成->事件
  • 每日一题 279完全平方数(完全背包)
  • 创意中秋与国庆贺卡 - 用代码为节日增添喜悦
  • 专业综合课程设计 - 优阅书城项目(第一版)
  • 【剑指Offer】13.机器人的运动范围
  • 【Qt基础篇】信号和槽
  • .netCore用DispatchProxy实现动态代理
  • 好奇喵 | Tor浏览器——访问.onion网址,揭开Dark Web的神秘面纱
  • Maven 中引用其他项目jar包出现BOOT-INF问题
  • PHP框架面试题
  • 如何清理C盘
  • 计算机网络基础知识