1. package main
    2. import (
    3. "fmt"
    4. )
    5. func maxSubArray(nums []int) int { //时间复杂度:O(n)
    6. max := nums[0] //假设第0个位置是当前最大值
    7. for i := 1; i < len(nums); i++ { //遍历数组
    8. if nums[i]+nums[i-1] > nums[i] { //当前值+前一个值大于当前值
    9. nums[i] = nums[i] + nums[i-1] //设置当前值=当前值+前一个值 类似向前不断滚动的感觉
    10. }
    11. if nums[i] > max { //当前值大于当前最大值
    12. max = nums[i] //设置当前最大值等于当前值
    13. }
    14. }
    15. return max
    16. }
    17. func main() {
    18. nums := []int{-2, 1, -3, 4, -1, 2, 1, -5, 4}
    19. fmt.Println(maxSubArray(nums))
    20. }