Skip to content

Commit c755f04

Browse files
authored
Add Maximum Subarray in Go (#5208)
1 parent 2d6c355 commit c755f04

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

archive/g/go/maximum-subarray.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strconv"
7+
"strings"
8+
)
9+
10+
func max(a, b int) int {
11+
if a > b {
12+
return a
13+
}
14+
return b
15+
}
16+
17+
func main() {
18+
if len(os.Args) < 2 || strings.TrimSpace(os.Args[1]) == "" {
19+
fmt.Println(`Usage: Please provide a list of integers in the format: "1, 2, 3, 4, 5"`)
20+
return
21+
}
22+
input := strings.Join(os.Args[1:], "")
23+
parts := strings.Split(input, ",")
24+
nums := make([]int, len(parts))
25+
26+
for i, p := range parts {
27+
p = strings.TrimSpace(p)
28+
n, _ := strconv.Atoi(p)
29+
nums[i] = n
30+
31+
}
32+
33+
maxSum := nums[0]
34+
blockSum := nums[0]
35+
36+
for i := 1; i < len(nums); i++ {
37+
blockSum = max(nums[i], blockSum+nums[i])
38+
if maxSum < blockSum {
39+
maxSum = blockSum
40+
41+
}
42+
43+
}
44+
fmt.Println(maxSum)
45+
46+
}

0 commit comments

Comments
 (0)