/** * @param {number[]} nums * @return {number} */ const maxSubArray = function (nums) { }; /* 定义dp[i]为从nums[i]开始的和最大的子数组,那么动态转移方程为dp[i] = dp[i+1] + nums[i] (dp[i+1] > 0) */ function f1(nums) { const dp = Array(nums.length + 1).fill(0); // dp[i]表示从i位置开始的和最大子数组 let result = -Infinity; for (let i = nums.length - 1; i >= 0; i--) { if (dp[i + 1] > 0) { dp[i] = nums[i] + dp[i + 1]; } else { dp[i] = nums[i]; } result = Math.max(result, dp[i]); } return result; }