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

2026.7.2

1.和为K的子数组

任意连续子数组的和"转换成两个前缀和的差。遍历数组时维护当前前缀和 pre_sum,如果以前存在某个前缀和 x,满足 pre_sum - x = k,那么从那个前缀和之后到当前位置的连续子数组和就等于 k,因此只需要在哈希表中查找 pre_sum - k 是否出现过,并将其出现次数累加到答案中,最后再把当前前缀和加入哈希表,整个过程时间复杂度为 O(n)。

我最开始不理解为什么初始化要放 prefix = {0:1},觉得它会干扰结果。实际上,它并不是多放了一个前缀和,而是为了统一处理从下标 0 开始的子数组**。如果不放 {0:1},就必须额外写

if pre_sum == k: count += 1 来处理这种特殊情况;而放入 {0:1} 后,当 pre_sum == k 时,就会自动查找到 pre_sum - k = 0,程序自然会统计这类子数组,从而把特殊情况变成了普通情况。同时,哈希表中保存的是前缀和出现的次数,而不是前缀和值本身,因为同一个前缀和可能在多个位置出现,每出现一次,就意味着多了一个可以作为连续子数组起点的位置,因此需要把所有出现次数都累加到答案中。{0:1} 不会让答案变多,因为它从来没有创造新的子数组,刚开始初始化prefix = {0:1}只是把“从下标 0 开始的子数组”这一种情况,纳入了统一的哈希表统计方式。

2.最大子数组和--动态规划

可以把整个算法看成一个归纳证明:

初始情况:i = 0 时,只有一个子数组 [nums[0]],所以 cur = nums[0],定义成立。
归纳假设:假设处理到 i-1 时,cur 确实是以 nums[i-1] 结尾的最大连续子数组和。
归纳步骤:处理 i 时,所有以 nums[i] 结尾的子数组,要么是 [nums[i]],要么是某个以 nums[i-1] 结尾的子数组再加上 nums[i]。根据上面的分析,只需要考虑其中最大的那个,也就是旧的 cur。因此:
cur = max(nums[i], cur + nums[i])

然后选最大的cur即可

http://www.jsqmd.com/news/1114981/

相关文章:

  • 软考零基础时间规划全崩溃预警:这5个时间节点不卡死,你再学300小时也白搭!
  • IntelliJ IDEA JDK编译版本错乱事件簿(2024年Q2高频故障TOP1,已影响83家企业的Spring Boot 3.2+项目上线)
  • 软考论文万能结构拆解:开头3秒抓眼球、中间5段稳逻辑、结尾2句封神——阅卷人亲授评分锚点
  • 8款主流网盘直链下载助手:告别限速烦恼的终极解决方案
  • MTK设备救砖指南:开源工具MTKClient的完整使用教程
  • RePKG终极指南:3个高效技巧释放Wallpaper Engine创意资源
  • 市面上靠谱的光子嫩肤去黄口碑
  • AI赋能非技术行业实战:我用DeepSeek+混元整理了2026年山东省高考志愿填报完整指南
  • 3步实现跨设备自动化:KeymouseGo让电脑操控手机变得如此简单
  • KeymouseGo技术实现:高效自动化跨平台控制解决方案
  • 如何三步获取Steam创意工坊模组:WorkshopDL跨平台下载终极指南
  • 2026免费图片去水印工具推荐:网页端、电脑软件、手机APP汇总
  • OpenCore Legacy Patcher 终极指南:老Mac升级macOS完整教程 [特殊字符]
  • Linux学习(三)- 驱动测试
  • VAV变风量通风系统与定风量CAV系统对比:安全性、节能性与成本全面分析
  • 终极Flash浏览器:让经典Flash游戏和应用重获新生的完整指南
  • Sketchfab模型下载终极指南:3分钟解锁3D资源宝库
  • 自研 AI SaaS 全链路搭建经验:Vue3 前端 + FastAPI 后端架构、团队协作与商业化落地
  • Python+Playwright构建高保真AI应用并发测试工具实战
  • 英雄联盟LCU工具箱:5个核心功能提升你的游戏体验
  • 前端与算法交叉场景下AI编程模型实战横评
  • 格式规范否?8款AI论文写作软件势力榜,毕业论文轻松搞定!
  • 为什么你的时间计划总失效?软考高分学员vs低分学员的7天时间日志对比分析(含原始数据脱敏版)
  • STM32L452RE与74HC32实现低功耗键盘管理方案
  • 制造业知识管理怎么做?从SOP沉淀到故障经验复用
  • PolyGen 1.5:原生四边形网格生成的3D建模革命
  • Android USB HID模拟技术深度解析:内核级设备模拟实现原理
  • Redis核心基本特性详解
  • JavisDiT部署推理中遇到的若干问题及解决办法
  • 5步掌握罗技鼠标宏:PUBG绝地求生压枪脚本完整配置指南