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

最大子数组和

很自然的想到使用前缀和,使用一个变量记录目前为止的最小前缀和,遍历数组时,计算以目前为尾部的最大子数组和,并和最大值进行比较,比较容易犯错的地方就是各个值的初始化和循环内的三段代码的先后。

class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ n=len(nums) min_sum=0 s=0 answer=float('-inf') for i in range(n): s+=nums[i] answer=max(answer,s-min_sum) min_sum=min(min_sum,s) return answer

使用分治的思路:

分治法的第一步永远是极其粗暴的:从正中间一刀劈开,分成左半边和右半边。

要找的那个“和最大的连续子数组”,它的藏身之处只有可能有三种情况

  1. 纯左派:它完完全全缩在左半边里。

  2. 纯右派:它完完全全缩在右半边里。

  3. 骑墙派:它跨越了中间那条切分线,一部分在左边,一部分在右边。

  • 唯一需要亲自动手解决的,就是算出骑墙派的最大值,然后把这三个值拿出来比大小,最大的那个就是整个数组的最终答案

计算骑墙派的最大值

既然它跨越了中间线,那它一定包含中间线左边紧挨着的元素,和右边紧挨着的元素。

所以只需要:

  1. 从中间线向左,一路加过去,记录下向左能延伸出的最大和。

  2. 从中间线向右,一路加过去,记录下向右能延伸出的最大和。

  3. 把这俩最大和拼在一起,就是横跨中间的最大连续子数组和

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

相关文章:

  • 首个Agentic多模态检索大模型全解(非常详细),清华最新成果从入门到精通,收藏这一篇就够了!
  • 为什么FFT能去周期背景?
  • M2LOrder模型Java企业级应用开发:从环境搭建到微服务架构
  • 突破性3D视觉开发挑战:Intel RealSense SDK在Ubuntu 22.04上的高效部署与Python实战
  • SEO_让流量持续增长的长期SEO策略规划
  • 告别剧本创作烦恼:Trelby开源效率工具让创作回归本质
  • RLVR+GRPO实战:如何用强化学习提升多模态情感识别的可解释性?
  • PyTorch 2.8镜像效果分享:RTX 4090D实测PixArt-Alpha文生图色彩还原度
  • 终极指南:MiroFish群体智能引擎深度解析与实战应用
  • 突破远程桌面限制:RDP Wrapper多用户并发全攻略
  • UE4开发者必看:Rider调试PC DebugGame的5个高效技巧(含避坑指南)
  • Python+MATLAB双教程:用nilearn和dpabi玩转MRI图像重采样(避坑指南)
  • Deep-Live-Cam模型加载故障排除解决方案:从问题诊断到性能优化
  • SDMatte与3D建模工作流结合:从真实照片快速提取贴图素材
  • TwiBot-22全流程实战指南:Twitter机器人检测与图结构识别
  • # 20251901 2025-2026-2 《网络攻防实践》实验一
  • Spring Boot项目中Swagger3.0的进阶配置:多路径扫描与URL过滤的避坑指南
  • 96. 不同的二叉搜索树
  • 自动点胶机数据采集物联网解决方案
  • 20260325_144530_AAAI_2026_让_LLM_“看图不迷路”:多智能体_S
  • 2026年3月西宁拆除公司最新推荐:砸墙拆除、酒店拆除、桥梁拆除公司选择指南 - 海棠依旧大
  • 保姆级教程:用FEKO仿真数据+MATLAB实现2D-ISAR-FFT成像(附完整代码)
  • 终极指南:如何用asitop深度监控Apple Silicon性能瓶颈
  • Linux驱动开发中的UART协议原理与实践
  • 星空(1)
  • .NET Core 终极指南:为什么这个跨平台框架能改变你的开发方式?
  • 华为路由器秒变FTP服务器:5分钟搞定文件共享(附安全配置技巧)
  • 手把手教你用SkillsForAll注册CISCO Packet Tracer(附NetAcad账号迁移教程)
  • “精讲:Prescan与Simulink下的LKA、AEB控制技术,包括LKA PID控制方向...
  • 低光增强新突破:拆解DLEN中可学习小波模块的5个设计精妙之处