力扣链接:53.最大子数组和
难度:⭐⭐
解题关键词:动态规划
、数组
解题思路:动态规划,dp[i]代表第 i 个元素的最大子数组和,dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]),看前面最大和和当前元素相加,还是直接当前元素大,最后找一个最大的子数组和。
typescript
function maxSubArray(nums: number[]): number {
const len = nums.length;
const dp = [0];
let result = -Infinity;
for (let i = 1; i <= len; i++) {
// 看前面最大和和当前元素相加,还是直接当前元素大
dp[i] = Math.max(dp[i - 1] + nums[i - 1], nums[i - 1]);
// 找一个最大的子数组和
result = Math.max(result, dp[i]);
}
return result;
}