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

前缀和-560.和为k的子数组-力扣(LeetCode)

一、题目解析

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

2.nums[i]范围为[-1000,1000],存在负数

3.由于2的题目条件,该题不能用双指针算法,不具备单调性 

二、算法原理

解法1:暴力解法->枚举 O(N^2)

固定一个值,向后枚举数组和,遇到sum == k仍需继续枚举,因为后面同样有可能出现sum == k的情况

解法2:前缀和+哈希表

用哈希表unordered_map<int,int> hash,统计前缀和出现的频率

细节问题:

1.前缀和加入哈希表的时机?

在判断hash表中是否存在sum[i]-k后加入哈希表,即在下一个位置计算前缀和时,哈希表内存储的是上次的前缀和,也就是[0,i-1]区间的前缀和

2.不用真的创建一个前缀和数组,使用变量sum标记前一个位置的前缀和

3.如果整个前缀和等于k呢?

即在hash中,hash[0]=1

三、代码示例

class Solution {
public:int subarraySum(vector<int>& nums, int k){unordered_map<int,int> hash;hash[0] = 1;int sum = 0,ret = 0;for(auto e : nums){sum += e;if(hash.count(sum - k)) ret += hash[sum - k];hash[sum]++;}return ret;}
};

 

 

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见! 

http://www.lryc.cn/news/601265.html

相关文章:

  • Qt C++ GUI 函数参数速查手册:基础与布局
  • HDFS基础命令
  • Python 列表推导式与生成器表达式
  • 3-基于FZ3B的Vitis AI DPU加速平台搭建
  • Vscode的常用快捷键(摆脱鼠标计划)
  • CodeBLEU:面向代码合成的多维度自动评估指标——原理、演进与开源实践
  • Jmeter的元件使用介绍:(七)后置处理器详解
  • 【NLP实践】一、中文短句情感二分类实现并提供RestfulApi服务调用
  • Mitk教程案例项目编译
  • Java AI面试实战:Spring AI与RAG技术落地
  • 【Qt开发】信号与槽(二)-> 信号和槽的使用
  • LeetCode第349题_两个数组的交集
  • UDS 0x29 身份验证服务 Authentication service
  • KNN 算法中的各种距离:从原理到应用
  • Java面试全攻略:Spring生态与微服务架构实战
  • 零基础 “入坑” Java--- 十四、字符串String
  • docker-desktop引擎启动失败报wsl --update
  • 数独求解器与生成器(回溯算法实现)
  • 一文读懂 JWT(JSON Web Token)
  • Spring Boot2错误处理
  • Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
  • 【AI阅读】20250717阅读输入
  • Linux YUM 安装:高效管理软件包的利器
  • 白杨SEO:搜索引擎优化中的allintitle是什么指令?有哪些用处?
  • 8. 状态模式
  • 【最新版】防伪溯源一体化管理系统+uniapp前端+搭建教程
  • ACL原理和配置
  • 【element-ui】HTML引入本地文件出现font找不到/fonts/element-icons.woff
  • 【lucene】MMapDirectory 在FSDirectory基础上干了啥?
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情分析实现