LeetCode hot 100 —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不知道为什么做了滑动窗口和双指针以后总想用left and right来做很多题目但在第一版本敲代码的时候就知道这里不适合用了。首先是数组是无序的左移和右移并不能完全的对应减和加所以带来的衍生点是比如说现在找到了一个合适的子数组我的Left和 right 要怎么更新我完全没有头绪然后我想到了差分。也是当时练习csp的入门算法。和GPT对了一下思路除了差分还有一个东西叫前缀和算是差分的进阶版太久没用了已经不是我的第一反应了....也就是前n个数字的和是多少假设定义prefix[i] nums 前 i 个数字之和那么从下标left到right的子数组和可以表示成prefix[right 1] - prefix[left]题目要求它等于kprefix[right 1] - prefix[left] k把这个式子移动一下prefix[left] prefix[right 1] - k现在先别急着写代码只思考当我从左向右计算到一个新的前缀和current时我需要在之前出现过的前缀和里寻找什么值前缀和为current - k的再进一步思考题目问的是子数组的“个数”如果要找的那个前缀和值在前面出现了多次意味着什么尝试手算nums [1, -1, 1] k 1它的前缀和记得最开始还有一个“尚未选择任何数字”的前缀和0是0, 1, 0, 1当你走到最后一个前缀和1时需要寻找1 - k 0此前0出现了不止一次。每一个此前出现的0都对应一个以当前位置结尾、和为1的子数组。因此你下一步只需要回答两个问题如何一边遍历一边记录此前每个前缀和出现了多少次如何快速查询当前前缀和 - k此前出现了多少次想清楚这两点就不再需要控制left和right了。这里的思维转换是不要直接维护一个窗口而是把每个可能的左边界压缩成“此前出现过的前缀和统计”。最后的代码如下class Solution: def subarraySum(self, nums: List[int], k: int) - int: # 构造前缀和 prefix_cnt {0: 1} 这个也算是看了GPT给的答案以后受到的大启发我给的一个注释和思维解释是 这道题目需要前缀和但为什么不使用常规的前缀和数组呢 - 因为我最后需要统计的是res_count也就是我需要统计的是个数 我知道了当前的前缀和为current, 我需要找的值是current - k,我需要统计的东西是current - k 出现了多少次所以这里用的是一个dict的形式可以更快的知道某个前缀和已经出现的次数. - 为什么要初始化一个0 : 1确保nums[0]也可以被划入. 比如当前current k那么就是nums[0:index 1]可以计入一次但是如果没有0这个答案不会被计入。 res 0 prefix_sum 0 #记录前缀和 for num in nums: prefix_sum num res prefix_cnt.get(prefix_sum - k, 0) dict.get(key, default) 表示 - 如果字典中存在 key返回对应的值。 - 如果不存在返回 default。 prefix_cnt[prefix_sum] ( prefix_cnt.get(prefix_sum, 0) 1 ) return res总结一下感觉GPT启发的核心是先找准算法结构用什么。双指针还是我想到的差分及其进阶版的前缀和从答案反推数据结构数据结构是统计上面的优化什么样的数据结构载体可以更快的得到答案比如这里如果用前缀和数组的话每遇到一个前缀和就要去统计current - k的出现次数时间开销肯定会加大的

相关新闻

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音 【免费下载链接】ebook2audiobook Generate audiobooks from e-books, voice cloning & 1158 languages! 项目地址: https://gitcode.com/GitHub_Trending/eb/ebook2audiobook 还在为制作有声书…

2026/8/11 17:19:50 阅读更多 →
Glean部署教程:Docker Compose一键启动,轻松管理服务依赖

Glean部署教程:Docker Compose一键启动,轻松管理服务依赖

Glean部署教程:Docker Compose一键启动,轻松管理服务依赖 【免费下载链接】glean A self-hosted RSS reader and personal knowledge management tool. 项目地址: https://gitcode.com/gh_mirrors/glean8/glean Glean是一款自托管的RSS阅读器和个…

2026/8/11 17:19:50 阅读更多 →
老板该看的工厂排产管理(四):生产日历不是考勤表,它决定工厂真实产能和交期底线

老板该看的工厂排产管理(四):生产日历不是考勤表,它决定工厂真实产能和交期底线

很多老板看生产计划时,第一眼会看订单、看设备、看交期,很少第一眼去看生产日历。 因为生产日历看起来太基础了。 不就是设置一下班次吗? 不就是告诉系统哪天上班、哪天休息吗? 不就是把早班、中班、晚班维护进去吗&#xff1…

2026/8/11 17:18:50 阅读更多 →

最新新闻

构建现代AI Agent:从LLM到RAG的六大核心模块全解析

构建现代AI Agent:从LLM到RAG的六大核心模块全解析

1. 项目概述:一个现代AI Agent的完整拼图最近和几个做AI应用落地的朋友聊天,大家普遍有个感觉:单靠一个大语言模型(LLM)已经玩不转了。无论是做个简单的客服助手,还是想搞个能自动处理复杂流程的智能体&…

2026/8/12 21:01:53 阅读更多 →
Java生成Word文档实战指南:从Apache POI选型到性能优化

Java生成Word文档实战指南:从Apache POI选型到性能优化

1. 项目概述:为什么Java生成Word文档是个“技术活”?如果你是一名Java开发者,最近刚好接到一个需求,比如要批量生成合同、报告、或者带复杂格式的录取通知书,你的第一反应是什么?是去手动复制粘贴&#xff…

2026/8/12 21:01:53 阅读更多 →
AI语音合成项目部署指南:从环境配置到俄语TTS实战

AI语音合成项目部署指南:从环境配置到俄语TTS实战

这次我们来看一个名为“【雪松】【AI克劳迪娅】【俄语版本】死别”的项目。从标题来看,这很可能是一个涉及AI语音生成或数字人技术的项目,核心关键词指向“雪松”、“AI克劳迪娅”以及“俄语版本”。虽然没有详细的官方项目描述,但结合当前AI…

2026/8/12 21:01:53 阅读更多 →
Abaqus 2021安装全攻略:从许可证配置到环境变量详解

Abaqus 2021安装全攻略:从许可证配置到环境变量详解

1. 项目概述:为什么选择Abaqus 2021?如果你正在机械、土木、航空航天或者材料领域做仿真分析,那么Abaqus这个名字对你来说一定不陌生。作为达索系统旗下功能最强大的通用有限元分析软件之一,Abaqus以其在非线性分析方面的卓越能力…

2026/8/12 21:01:53 阅读更多 →
AI时代程序员转型:从编码到架构与质量守护

AI时代程序员转型:从编码到架构与质量守护

1. 从“编码者”到“架构师”:AI时代程序员的角色重塑最近和几个老同事吃饭,聊起现在的工作状态,大家不约而同地提到一个现象:以前一天到晚在IDE里敲代码,现在一天到晚在跟各种AI工具“对话”。GitHub Copilot、Cursor…

2026/8/12 21:01:53 阅读更多 →
麒麟系统安装察元 WPS AI 文档助手:免费、开源、离线部署说明

麒麟系统安装察元 WPS AI 文档助手:免费、开源、离线部署说明

要点速览 察元是运行在 WPS 文字中的 AI 文档助手类加载项,在 WPS 内提供对话、写作、翻译、审校与批量处理等能力,可作为 WPS 环境下的 AI 助手能力补充。软件可免费使用,源代码在 GitHub 公开,许可以仓库 LICENSE 为准。部署上…

2026/8/12 21:00:52 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →