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

【PYTHON】力扣刷题笔记 -- 0053. 最大子数组和【中等】

  • 题目描述:给你一个整数数组 array: nums ,请你找出一个具有最大和的连续子数组 sub-array,返回其最大和
    • 子数组(最少包含一个元素): 是数组中的一个连续部分

  • 示例 1
    输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
    输出:6

  • 示例 2:
    输入:nums = [1]
    输出:1

  • 示例 3
    输入:nums = [5,4,-1,7,8]
    输出:23


  • 题解:采用动态规划进行求解,以下为动态规划详细步骤分析
    1. 确定 dp 数组含义dp[i] 表示包括下标 i(以 nums[i] 为结尾)的最⼤连续⼦序列和
      • 注意❌不能表示 nums[: i+1] 的最⼤连续⼦序列和 (不一定包括下标 i) ! 否则无法递推!
    2. 确定递推公式:取 断/不断 的最大值 max(nums[i], dp[i-1] + nums[i])
      • 如果从 nums[i] 前断开:则包括下标 i 的最⼤连续⼦序列和为 nums[i]
      • 如果不从 nums[i] 断开:则包括下标 i 的最⼤连续⼦序列和为 dp[i-1] + nums[i]
    3. 确定遍历顺序和初始化:从前向后,初始化 dp[0] = nums[0]
      • 从递推公式可以看出 dp[i] 由前序元素 dp[i-1] 推出,根本是 dp[0]
      • 根据 dp 数组含义, dp[0] 表示包括下标 0 的最⼤连续⼦序列和,即只包含 nums[0],所以 dp[0] = nums[0]

  • 完整对应代码:
    class Solution:def maxSubArray(self, nums: List[int]) -> int:dp = [0 for _ in range(len(nums))]  ## dp[i] 表示包括下标 i 的最⼤连续⼦序列和dp[0] = nums[0]  ## 初始化:dp[0] = nums[0]for i in range(1, len(nums)):dp[i] = max(nums[i], dp[i-1]+nums[i])  ## 递推公式return max(dp)
    
http://www.lryc.cn/news/386315.html

相关文章:

  • Linux启动elasticsearch,提示权限不够
  • css 布局出现无法去除的空白
  • 使用SpringBoot整合filter
  • Python酷库之旅-第三方库openpyxl(15)
  • 葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署
  • OpenAI推出自我改进AI- CriticGPT
  • springboot系列七: Lombok注解,Spring Initializr,yaml语法
  • 专访ATFX首席战略官Drew Niv:以科技创新引领企业高速发展
  • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4
  • android——Livedata、StateFlow、ShareFlow和Channel的介绍和使用
  • Debezium 同步 MySQL 实时数据并解决数据重复消费问题
  • 【图像处理】1、使用OpenCV库图像轮廓的检测和绘制
  • 【AI编译器】triton学习:矩阵乘优化
  • 动静分离网络
  • Python商务数据分析知识专栏(三)——Python数据分析的应用①Matplotlib数据可视化基础
  • DataV大屏组件库
  • paraview跨节点并行渲染
  • Java中相等比较详解
  • HBuilder X 小白日记01
  • 使用Protocol Buffers优化数据传输
  • 如何把mkv转成mp4?介绍一下将mkv转成MP4的几种方法
  • PHP语言学习02
  • PX2资料及问题记录
  • Jenkins容器的部署
  • QT 自绘树形控件
  • axios之CancelToken取消请求
  • Unity | API鉴权用到的函数汇总
  • 【python】socket通信代码解析
  • FastGPT 手动部署错误:MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo
  • 用英文介绍芝加哥(1):Making Modern Chicago Part 1 Building a Boomtown