image.png

思路

这道题的动态规划做法,还有一种是贪心做法。
做之前看了贪心,结果思路被影响了。
dp的定义、递推公式我是正确的= =
dp只能从两个地方得来, dp[i-1]+nums[i] 或者nums[i],开启新子数组
二者取最大!

  1. // 动规
  2. var maxSubArray = function(nums) {
  3. let result =nums[0];
  4. let dp =new Array(nums.length).fill(0)
  5. dp[0] =nums[0]
  6. for(let i=1;i<nums.length;i++){
  7. dp[i] =Math.max(dp[i-1]+nums[i],nums[i]) //取两个途径里最大的
  8. result =result>dp[i]?result:dp[i]
  9. }
  10. return result
  11. };