Tencent 46-subsecuencia máxima y leetcode53
Dado un número entero de matrices, encuentre una submatriz continua con la suma más grande (la submatriz contiene al menos un elemento) y devuelva la suma más grande.
Ejemplo:
Entrada: [-2,1, -3,4, -1,2,1, -5,4],
Salida: 6
Explicación: La suma de sub-matrices consecutivas [4, -1,2,1] es máxima, que es 6 .
Avanzado:
Si ha implementado una solución con complejidad O (n), intente utilizar una solución de divide y vencerás más elaborada.
La fórmula dp es decidir cómo usar el resultado anterior de acuerdo a si el valor actual es mayor que 0
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
if len(nums)==1:return nums[0]
res=nums[0]
dp=[nums[0]]
for i in range(1,len(nums)):
if dp[i-1]<=0:
dp.append(nums[i])
else:
dp.append(nums[i]+dp[i-1])
res=max(res,dp[-1])
return res