Tencent 46 - subsequência máxima e código de leet53
Dado um número inteiro de matrizes, encontre uma sub-matriz contínua com a maior soma (a sub-matriz contém pelo menos um elemento) e retorne a maior soma.
Exemplo:
Entrada: [-2,1, -3,4, -1,2,1, -5,4],
Saída: 6
Explicação: A soma das sub-matrizes consecutivas [4, -1,2,1] é máxima, que é 6 .
Avançado:
Se você implementou uma solução com complexidade O (n), tente usar uma solução de divisão e conquista mais elaborada.
A fórmula dp é decidir como usar o resultado anterior, dependendo se o valor atual é maior 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