[Leetcode] Suma máxima de submatrices consecutivas

Descripción del problema:

        Introduzca una matriz de enteros. Hay números positivos y negativos en la matriz. Uno o más enteros consecutivos en la matriz forman una submatriz. Encuentre el valor máximo de la suma de todas las submatrices.

         La complejidad de tiempo requerida es O (n).

Ejemplo 1:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

análisis del problema:

       Este problema se puede resolver mediante programación dinámica. El método de programación dinámica también se puede considerar como un método de llenado de tablas, y es necesario construir una tabla de programación dinámica. Aquí se construye una tabla y el valor del elemento en cada posición de la tabla indica el valor máximo cuando la posición actual es la última posición del subarreglo. El enfoque específico es:

  1. Inicialización: define la suma máxima de la submatriz de registros maxv variable, el valor inicial es el primer elemento de la lista list [0];
  2. Para recorrer la lista, si el valor del elemento anterior es negativo, entonces el valor del elemento actual permanece sin cambios; si es positivo, agregue el valor del elemento anterior como el valor del elemento actual;
  3. Compare el valor del elemento actual con maxv, y maxv toma el valor más grande

Tome la lista nums = [-2,1, -3,4, -1,2,1, -5,4] como ejemplo:

 

nums -2 1 -3 4 -1 2 1 -5 4
dp -2 1 -2 4 3 5 6 1 5
maxv -2 1 1 4 4 5 6 6 6

 

Análisis de algoritmos:

          El algoritmo solo necesita atravesar la matriz nums una vez, por lo que la complejidad del tiempo es O (n). Usando una cantidad constante de espacio extra, la complejidad del espacio es O (1).

Implementación de codificación:

class Solution:
    def maxSubArray(self, lists: List[int]) -> int:
        maxv = lists[0]
        for i in range(1,len(lists)):
            if lists[i-1]>0:
                lists[i] += lists[i-1]
            if lists[i] > maxv:
                maxv = lists[i]
        return maxv
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw ==uploading.4e448015.gifNo se pudo volver a cargar y cancelar wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw ==

 

 

Supongo que te gusta

Origin blog.csdn.net/VinWqx/article/details/104988950
Recomendado
Clasificación