最大子序和

package main

import (
	"fmt"
	"sort"
)

func maxSubArray(nums []int) []int {

	var slice []int

	for j := 0; j < len(nums); j++ { // 外层for循环提供变量

		var sum int
		for i := 0; i < j; i++ {
			sum = sum + nums[i]
			slice = append(slice, sum)
		}

		var sum2 int
		for k := j; k < len(nums); k++ {
			sum2 = sum2 + nums[k]
			slice = append(slice, sum2)
		}
	}

	return slice
}

func main() {
	/*
		输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
		要求时间复杂度为O(n)。

		示例1:
		输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
		输出: 6
		解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
	*/
	var slice = []int{-2, 1, -3, 4, -1, 2, 1, -5, 4}
	a := maxSubArray(slice)
	fmt.Println(a)
	sort.Ints(a)
	fmt.Println(a)
}

  

原文地址:https://www.cnblogs.com/yzg-14/p/12348310.html