Dada una matriz de enteros nums
, busque una submatriz continua con la suma más grande (la submatriz contiene al menos un elemento) y devuelva la suma más grande.
Ejemplo:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6
Solución: planificación dinámica
Ecuación de programación dinámica: dp [i] = max (dp [i-1] + nums [i], nums [i])
Programación dinámica: defina dp [i] como nums [i] al final [suma máxima de subarreglos consecutivos]
Al atravesar nums [i], necesitamos comparar nums [i] y dp [i-1] + nums [i] que es mayor, y luego tomar el valor mayor
func maxSubArray(nums []int) int {
max := nums[0]
for i := 1; i < len(nums); i++ {
if nums[i] + nums[i-1] > nums[i] {
nums[i] += nums[i-1]
}
if nums[i] > max {
max = nums[i]
}
}
return max
}
Dirección de referencia: https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/