尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

10 和为k的子数组

10 和为k的子数组
📅 发布时间:2026/7/25 15:41:54

给你一个整数数组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
思路1

滑动窗口

1、检查参数的合法性

2、循环数组nums,从0到nums.size()-1,记下标为i,定义满足次数的变量_count=0。

3、循环下标i到0的累加和,nums[i]+nums[i-1]、nums[i]+nums[i-1]+nums[i-2]....... nums[i+nums[i-1]+nums[i-2]+nums[0]。判断累加和是否有满足和等于k的。

4、满足条件k+1,不满足条件忽略,最后返回_count。

class Solution { public: int subarraySum(vector<int>& nums, int k) { if(nums.empty()) return 0; int _count=0; for(int i=0;i<nums.size();i++){ int _sum=0; for(int j=i;j>=0;j--){ _sum+=nums[j]; if(_sum==k) _count++; } } return _count; } }; //写法2 class Solution { public: int subarraySum(vector<int>& nums, int k) { int n=nums.size(); if(n==0) return 0; int _ans=0; for(int i=0;i<n;i++){ int _sum=0; for(int j=i;j<n;j++){ _sum+=nums[j]; if(_sum==k) _ans++; } } return _ans; } };
思路2

官方解法我们定义 pre[i] 为 [0..i] 里所有数的和,则 pre[i] 可以由 pre[i−1] 递推而来,即:

pre[i]=pre[i−1]+nums[i] 那么「[j..i] 这个子数组和为 k 这个条件我们可以转化为

pre[i]−pre[j−1]==k 简单移项可得符合条件的下标 j 需要满足

pre[j−1]==pre[i]−k

步骤

1、检查参数的合法性,定义一个hash表,key是pre[i],value是出现的次数。

2、循环数组nums,计算每一个的pre[i],然后查找hash表中是否存在k-pre[i]这个值,

3、若存在,则count++,若不存在则跳过。

4、把pre[i]插入hash表中。

5、循环结束,返回count。

class Solution { public: int subarraySum(vector<int>& nums, int k) { if(nums.empty()) return 0; unordered_map<int,int> hash; int _count=0; int _sum=0; hash[0]=1; for(int i=0;i<nums.size();i++) { _sum+=nums[i]; unordered_map<int,int>::iterator it=hash.find(_sum-k); if(it==hash.end()){ hash[_sum]++; continue; } _count+=hash[_sum-k]; hash[_sum]++; } return _count; } };

推荐一个零声教育学习教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:链接

相关新闻

  • 工业自动化电机选型实战指南:从需求分析到参数计算与避坑
  • 跨平台音频下载工具:高效获取喜马拉雅有声内容完整方案
  • 终极指南:如何快速获取国家中小学智慧教育平台的电子教材资源

最新新闻

  • KMS智能激活工具:三步实现Windows与Office永久激活的完整指南
  • 智能获取国家中小学智慧教育平台电子课本的终极方案:免费开源工具全解析
  • 终极QQ音乐格式转换工具:3步解锁加密音乐,让音频自由播放
  • 2026年7月滨海儿童摄影哪家好?万千宝妈实名推荐童颜摄影 - 起跑123
  • MSP430 FRAM超低功耗设计:从原理到实践的嵌入式系统优化指南
  • 深信服超融合方案快速选型指南:从需求到落地的简明路径 - 汇聚至此

日新闻

  • 从国家条件到买方清单,深入理解 ABAP CDS 单值过滤器派生
  • 2026 年当下,齐齐哈尔专业的不锈钢闸门批发厂家哪个好,揭秘!这个工业“铁门”如何实现成本翻倍的效率提升? - 行业甄选官
  • 2026阳极氧化加工厂推荐:从设备规模看硬质氧化技术的成熟应用推荐百正机械 - 栗子测评

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号