Notas de cepillado de LeetCode _53. Suma máxima posterior

El tema es de LeetCode

53. Suma máxima posterior

Se puede acceder a otras soluciones o código fuente: tongji4m3

descripción

Dados los números de una matriz entera, 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。

Avanzado:

Si ya ha implementado una solución con complejidad O (n), intente utilizar una solución más sutil de dividir y conquistar.

Ideas

Desplácese de izquierda a derecha, si es mayor que 0, manténgalo, de lo contrario no lo haga. el resultado se juzga en cada momento

detalle

Debido a que la submatriz contiene al menos un elemento, la inicialización no puede ser 0, pero el valor mínimo de int

Código

//子数组最少包含一个元素
public int maxSubArray(int[] nums)
{
    
    
    int N = nums.length;
    int result = Integer.MIN_VALUE,temp=0;//look,因为条件是至少包含
    for (int i = 0; i < N; i++)
    {
    
    
        temp = temp > 0 ? temp + nums[i] : nums[i];
        result = Math.max(result, temp);
    }
    return result;
}

Análisis de complejidad

complejidad del tiempo

O (N) O (N) O ( N )

Complejidad espacial

O (1) O (1) O ( 1 )

Supongo que te gusta

Origin blog.csdn.net/weixin_42249196/article/details/108232389
Recomendado
Clasificación