@@ -0,0 +1,30 @@
+package main
+
+import "fmt"
+func main() {
+ var nums []int
+ nums = []int{-2, 1, -3, 4, -1, 2, 1, -5, 4}
+ fmt.Println(maxSubArray(nums))
+}
+func maxNum(a, b int) int {
+ if a > b {
+ return a
+ }
+ return b
+func maxSubArray(nums []int) int {
+ var max = nums[0]
+ var sum = 0
+ for i := 0; i < len(nums); i++ {
+ if sum > 0 {
+ sum += nums[i]
+ } else {
+ sum = nums[i]
+ max = maxNum(max, sum)
+ return max
@@ -0,0 +1,34 @@
+func maxNums(nums []int) int {
+ for i := 1; i < len(nums); i++ {
+ if nums[i] > max {
+ max = nums[i]
+ nums[i] = nums[i] + maxNum(nums[i-1], 0)
+ return maxNums(nums)