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

面试150 最大子数组和

在这里插入图片描述

思路

贪心法:设定最小标志result为float(‘-inf’),遍历一次数组元素进行求和,如果当前元素大于result,则更新result的值,如果sum小于0,则重新置0进行计算,最后返回result

class Solution:def maxSubArray(self, nums: List[int]) -> int:n=len(nums)result=float('-inf')sum=0for i in range(n):sum+=nums[i]if sum>result:result=sum if sum<0:sum=0return result

动态规划法:首先定义动态规划数组dp=[float(‘-inf’)]*n,dp[i]表示以第i个元素结尾的最大连续子数组和,初始状态dp[0]为nums[0],递推的公式为当前最大的和要么是前一个元素+nums[i],要么是从当前元素nums[i]
重新开始,选择最大值进行更新,最后返回。

class Solution:def maxSubArray(self, nums: List[int]) -> int:if not nums:return 0n=len(nums)dp=[float('-inf')]*n dp[0]=nums[0]for i in range(1,n):dp[i]=max(dp[i-1]+nums[i],nums[i])return max(dp)
http://www.dtcms.com/a/295047.html

相关文章:

  • C语言学习(days09)
  • useEffect
  • Java异常处理核心原理与最佳实践
  • 数据驱动未来:构建强大AI系统的基石
  • QPixmap::scaled参数说明
  • 床上肢体康复机器人的机械结构设计cad【7张】三维图+设计说明书
  • 1、黑马点评复盘(短信登录-Session或Redis实现)
  • pytest简单使用和生成测试报告
  • FCW(Front Collision Warning)前碰撞预警功能介绍
  • 借助DataStream和多路复用实现可观察性
  • mybatis条件语句的查询与注解的使用以及mybatis与servelet结合查询
  • 数据结构系列之AVL树
  • 主要科技公司与新创公司 AI Agent 进展调研
  • Nginx 日志分析与慢请求排查
  • Symantec sep配置自定义yara规则
  • 背包九讲 详细解析与 C++ 实现
  • 不一样的Mysql安装方式
  • (8)Step 7 实现泵组主备切换与PID变频调节(压力——频率)
  • LangChain面试内容整理-知识点28:LangChain部署实践
  • 【JavaSE】正则表达式学习笔记
  • 二、计算机网络技术——第4章:网络层
  • 跟著Qcadoo MES系统学习产品设计001
  • 从订单簿到AMM:一场去中心化交易所的技术革命
  • 彻底掌握双列集合——Map接口以及实现类和常用API及其底层原理
  • 1688商品数据采集的应用行业与接入方式
  • 人工智能之数学基础:事件间的运算
  • JVM、Dalvik、ART垃圾回收机制
  • OpenLayers 快速入门(八)事件系统
  • java基础(the 15th day)
  • freelancer是什么用工模式?有什么好处和坏处呢?