44 lines
895 B
Go
44 lines
895 B
Go
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}))
|
|
}
|