package top100liked import "testing" // 爆内存 // func maxSubArray(nums []int) int { // l := len(nums) // msa := make([][]int, l) // for i := range msa { // msa[i] = make([]int, l) // } // res := nums[0] // for i, v := range nums { // msa[i][i] = v // res = max(res, v) // } // for i := range l { // for j := i + 1; j < l; j++ { // msa[i][j] = msa[i][j-1] + nums[j] // res = max(res, msa[i][j]) // } // } // return res // } func maxSubArray(nums []int) int { dp := make([]int, len(nums)) dp[0] = nums[0] maxSoFar := nums[0] for i := 1; i < len(nums); i++ { dp[i] = max(nums[i], dp[i-1]+nums[i]) maxSoFar = max(maxSoFar, dp[i]) } return maxSoFar } func TestS13(t *testing.T) { println(maxSubArray([]int{-2, 1, -3, 4, -1, 2, 1, -5, 4})) println(maxSubArray([]int{1})) println(maxSubArray([]int{5, 4, -1, 7, 8})) println(maxSubArray([]int{-2, 1})) }