leetcode-53. 最大子数组和


题目

53. 最大子数组和

解法

dp

  1. 第一版写的时候,可以加一个 dp 数组,保存每个节点的最大值

dp 公式

\[f_n= \begin{cases} max(nums[n]+f_{n-1}, nums[n]) & n>=1 \\ nums[n], & n=0 \end{cases} \]

class Solution {
    
    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function maxSubArray($nums) {
        $len = count($nums);
        if ($len == 1) {
            return $nums[0];
        }
        
        $currentMaxSum = $nums[0];
        
        $max = $nums[0];
        for ($i=1; $i < $len; $i++) {
            $currentMaxSum = max($currentMaxSum + $nums[$i], $nums[$i]);
            $max = max($currentMaxSum, $max);
        }
        
        return $max;
    }
}