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

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

Python 更新时间:发布时间: 百科书网 趣学号

题目描述

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

方法一:动态规划

这里设定 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.051e.com
本文地址:http://www.051e.com/it/295986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号