题目
剑指 Offer 42. 连续子数组的最大和
题解
暴力求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| func maxSubArray(nums []int) int { temp,max := 0,nums[0] for i:=0;i<len(nums);i++ { if (temp + nums[i]) > nums[i] { temp = temp + nums[i] } else { temp = nums[i] } if temp > max { max = temp } }
return max }
|
动态规划(DP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| func maxSubArray(nums []int) int { if len(nums) == 0 { return 0 } n := len(nums) dp := make([]int, n) dp[0] = nums[0]
maxNum := dp[0]
for i := 1; i < n; i++ { if dp[i-1] > 0 { dp[i] = dp[i-1] + nums[i] } else { dp[i] = nums[i] } if maxNum < dp[i] { maxNum = dp[i] } }
return maxNum }
|
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!
微信支付
支付宝