Note: study again Kadane's Algorithm works for this problem https://www.youtube.com/watch?v=86CQq3pKSUw Remembering past sums (dynamic programming) reduces runtime.
(nums []int)
| 7 | // https://www.youtube.com/watch?v=86CQq3pKSUw |
| 8 | // Remembering past sums (dynamic programming) reduces runtime. |
| 9 | func maxSubArray(nums []int) int { |
| 10 | maxSum := nums[0] |
| 11 | maxCurrent := nums[0] |
| 12 | |
| 13 | for i := 1; i < len(nums); i++ { |
| 14 | maxCurrent = int(math.Max(float64(nums[i]), float64(maxCurrent+nums[i]))) |
| 15 | maxSum = int(math.Max(float64(maxSum), float64(maxCurrent))) |
| 16 | } |
| 17 | |
| 18 | return maxSum |
| 19 | } |
| 20 | |
| 21 | // Solved for the 2nd time |
| 22 | func maxSubArray2(nums []int) int { |
no outgoing calls