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

leetcode hot100刷题日记——6.和为 K 的子数组

在这里插入图片描述
解答:前缀和思想,见灵茶山艾府大大题解。

(1)前缀和思想:

  • 前缀和数组prefix_sum的定义是prefix_sum[i] = nums[0] + nums[1] + … + nums[i]。
  • 如果存在两个前缀和prefix_sum[j]和prefix_sum[i]满足prefix_sum[i] - prefix_sum[j] = k,则子数组nums[j+1…i]的和为k。
  • 因此,问题转化为寻找满足prefix_sum[i] - k = prefix_sum[j]的索引对(i, j)。

(2)哈希表优化:

  • 使用哈希表cnt记录前缀和出现的次数。键为前缀和的值,值为该前缀和出现的次数。
  • 初始化时,cnt[0] = 1是为了处理从数组起点开始的子数组(即prefix_sum[i] = k的情况)。

(3)迭代过程:

  • 遍历数组,逐步计算前缀和s。
  • 对于每个s,检查s - k是否存在于哈希表中。如果存在,说明存在前缀和为s - k的位置,对应子数组的和为k,将对应次数累加到结果ans。
  • 将当前前缀和s加入哈希表,供后续迭代使用。
class Solution {
public:int subarraySum(vector<int>& nums, int k) {int n=nums.size();int ans=0;//s[0]=0 单独统计//如果有个前缀和正好等于k,也是需要统计次数的unordered_map<int ,int> cnt{{0,1}};int s=0;//存储前缀和的变量for(int i=0;i<n;i++){s+=nums[i];//不断计算前缀和ans+=cnt.contains(s-k)?cnt[s-k]:0;cnt[s]++;}return ans;}
};

(4)时间与空间复杂度

  • 时间复杂度:O(n)
    遍历数组一次,每次操作哈希表的时间为均摊O(1)。
  • 空间复杂度:O(n)
    哈希表最多存储n个前缀和。
http://www.xdnf.cn/news/7619.html

相关文章:

  • 【Axure视频教程】动态地图路线
  • 实现rpc通信机制(待定)
  • R语言空间分析实战:地理加权回归联合主成份与判别分析破解空间异质性难题
  • 封装POD与PinMap文件总结学习-20250516
  • Go 语言简介
  • 操作系统的基础概念
  • 初步认识HarmonyOS NEXT端云一体化开发
  • AbMole| Phorbol 12-myristate 13-acetate(CAS号16561-29-8;目录号M4647)
  • vue+threeJs 生成烟花效果
  • PEFT简介及微调大模型DeepSeek-R1-Distill-Qwen-1.5B
  • 【css知识】flex-grow: 1
  • LibreHardwareMonitor:.Net开发的开源硬件监控项目
  • 中国机加工的市场概况及冷镦技术对于机加工替代的趋势
  • 如何在 Windows 11/10 PC 上擦除外部硬盘驱动
  • 什么叫生成式人工智能?职业技能的范式转移与能力重构
  • HarmonyOS5云服务技术分享--云存储SDK文章整理
  • 2025年 全国青少年信息素养大赛 算法创意挑战赛C++ 初中组 初赛真题
  • 94.LabelGrid 的遍历与属性编辑 Maui例子 C#例子
  • BioID技术:探索蛋白质相互作用的新方法
  • Java 05正则表达式
  • Linux中FTP服务命令使用与NFS服务
  • JavaScript的Button的contentItem属性
  • 企业建私有云,选择K8S方案会怎么样?
  • [洛谷刷题12]
  • COMSOL软件入门
  • 《棒球知识百科》亚冬会有哪些国家参加·棒球1号位
  • 后期:daplink
  • 基于CNN的猫狗识别(自定义Resnet-18模型)
  • 生产消费者模型 读写者模型
  • 学术前沿!IEEE PRMVAI 2025多模态深度学习研讨会来袭