LeetCode? 启动!!!
今天是一道 LeetCode 的经典题目,如果是 LeetCode 老手,估计都刷过,话是这么说,但咱们还是先看看题
题目链接:53. 最大子数组和
这道题,求最大和,我脑子里其实有两种方法冒了出来,一个是滑动窗口,一个是动态规划,但是作为一个滑动窗口老手,这道题大概是不能用滑动窗口来做的,那我就只能用动态规划来试试了,这道题并不复杂,对于一个背包问题都搞不定的动态规划菜鸟来说应该也能行
func maxSubArray(nums []int) int {
ans := -100000
dp := make([]int, len(nums)+1)
for i := 1; i <= len(nums); i++ {
dp[i] = max(nums[i-1], nums[i-1]+dp[i-1])
ans = max(ans, dp[i])
}
return ans
}
具体思路就是用求每个位置的最大和,然后根据上一个位置的最大和求当前位置的最大和,用了一点 dp 的思想。