152.go 535 B

12345678910111213141516171819202122232425
  1. package main
  2. func maxProduct(nums []int) int {
  3. length := len(nums)
  4. if length == 0 {
  5. return 0
  6. }
  7. globalMax := nums[0]
  8. min, max := nums[0], nums[0]
  9. for i := 1; i < length; i++ {
  10. // Negtive num makes bigger num smaller & smaller num bigger
  11. if nums[i] < 0 {
  12. min, max = max, min
  13. }
  14. min = minInt(nums[i], nums[i]*min)
  15. max = maxInt(nums[i], nums[i]*max)
  16. globalMax = maxInt(max, globalMax)
  17. }
  18. return globalMax
  19. }
  20. // func main() {
  21. // println(maxProduct([]int{ // The answer: 144
  22. // 2, -1, 6, 2, 1, -6, 0, 8, 7}))
  23. // }