动态规划(Dynamic Programming,简称 DP)是解决许多优化问题的强大工具。下面我将通过一个具体的 LeetCode 题目来解析动态规划的基本思想。

题目描述

给定一个整数数组 nums,返回其最大子数组和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

解题思路

这是一个经典的动态规划问题。我们可以用一个变量 max_sum 来记录到当前位置为止的最大子数组和,并用一个变量 current_sum 来记录当前子数组和。

代码实现

def maxSubArray(nums):
    max_sum = current_sum = nums[0]
    for num in nums[1:]:
        current_sum = max(num, current_sum + num)
        max_sum = max(max_sum, current_sum)
    return max_sum

扩展阅读

想要了解更多动态规划的知识,可以阅读本站的《动态规划基础教程》。

动态规划示例图