栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

剑指 Offer 42. 连续子数组的最大和(动态规划)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer 42. 连续子数组的最大和(动态规划)

题目描述

文章目录
  • 方法一:动态规划

方法一:动态规划

这里设定 f ( n ) f(n) f(n)为包含当前第 n n n个数num的最大连续子数组和,则可以写出递推公式为
f ( n ) = max ⁡ ( n u m , f ( n − 1 ) + n u m ) f ( 0 ) = n u m s [ 0 ] f(n) = max(num, f(n-1)+num)\ f(0) = nums[0] f(n)=max(num,f(n−1)+num)f(0)=nums[0]
注意这里递推公式中不是
f ( n ) = max ⁡ ( f ( n − 1 ) , f ( n − 1 ) + n u m ) f(n) = max(f(n-1), f(n-1)+num) f(n)=max(f(n−1),f(n−1)+num)
因为要保证是连续数组和

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        max_subarray = nums[0]
        res = nums[0]
        for num in nums[1:]:
            max_subarray = max(num, max_subarray + num)
            res = max(res, max_subarray)
        return res


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号