一、题目内容

image.png

二、题解

解法1:

思路

动态规划,转移方程为

  • dp[i-1] > 0
    • dp[i] = dp[i-1] + nums[i]
  • dp[i-1]<0
    • dp[i] = nums[i]

动态规划四步:

  • 状态:res结果表(取max,可以通过变量交换减少空间占用)
  • 状态转移:值不值得加
  • 初始状态:列表第一个数
  • 结果:res最终值

代码

  1. class Solution {
  2. public int maxSubArray(int[] nums) {
  3. int res = nums[0];
  4. for (int i = 1; i < nums.length; i++) {
  5. nums[i] += Math.max(nums[i-1], 0);
  6. res = Math.max(res, nums[i]);
  7. }
  8. return res;
  9. }
  10. }