diff --git a/problems/0053.最大子序和.md b/problems/0053.最大子序和.md index 3d11c91e..b5fb7642 100644 --- a/problems/0053.最大子序和.md +++ b/problems/0053.最大子序和.md @@ -211,7 +211,7 @@ func maxSubArray(nums []int) int { return maxSum } ``` - + ### Javascript: ```Javascript var maxSubArray = function(nums) { @@ -230,6 +230,41 @@ var maxSubArray = function(nums) { }; ``` +### TypeScript + +**贪心** + +```typescript +function maxSubArray(nums: number[]): number { + let curSum: number = 0; + let resMax: number = -Infinity; + for (let i = 0, length = nums.length; i < length; i++) { + curSum += nums[i]; + resMax = Math.max(curSum, resMax); + if (curSum < 0) curSum = 0; + } + return resMax; +}; +``` + +**动态规划** + +```typescript +// 动态规划 +function maxSubArray(nums: number[]): number { + const length = nums.length; + if (length === 0) return 0; + const dp: number[] = []; + dp[0] = nums[0]; + let resMax: number = nums[0]; + for (let i = 1; i < length; i++) { + dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]); + resMax = Math.max(resMax, dp[i]); + } + return resMax; +}; +``` + -----------------------