[Array] C_5372: Suma gradualmente para obtener el valor mínimo de número positivo (suma de enumeración / prefijo)

1. Título Descripción

Te da una gran variedad de números enteros. Puede elegir cualquier valor de inicio positivo como valor inicial.

Debe atravesar la matriz de números de izquierda a derecha y acumular los valores en la matriz de números a su vez.

Asegúrese de que la suma acumulativa sea siempre mayor o igual a 1 y elija un número positivo más pequeño como valor inicial.

输入:nums = [-3,2,-3,4,2]
输出:5
解释:如果你选择 startValue = 4,在第三次累加时,和小于 1 。
                累加求和
                startValue = 4 | startValue = 5 | nums
                  (4 -3 ) = 1  | (5 -3 ) = 2    |  -3
                  (1 +2 ) = 3  | (2 +2 ) = 4    |   2
                  (3 -3 ) = 0  | (4 -3 ) = 1    |  -3
                  (0 +4 ) = 4  | (1 +4 ) = 5    |   4
                  (4 +2 ) = 6  | (5 +2 ) = 7    |   2

Método 1: enumeración

public int minStartValue(int[] nums) {
    int st = Integer.MAX_VALUE;
    int t = -1;

    for (int i = 1; i < Integer.MAX_VALUE; i++) {
        st = i;
        int sum = st;
        boolean flag = true;
        for (int j = 0; j < nums.length; j++) {
            sum += nums[j];
            if (sum < 1) {
                flag = false;
                break;
            }
        }
        if (flag) {
            return st;
        }
    }
    return st;
}

Análisis de complejidad.

  • Complejidad del tiempo: El ( . . . ) El (...) ,
  • Complejidad espacial: El ( 1 ) O (1)

Método 2: Prefijo y

  • Piénselo de esta manera: porque el objetivo es hacer que el prefijo más pequeño y el valor que aparecen en el proceso de acumulación sea mayor que 1,
  • Por lo tanto, necesitamos registrar el valor mínimo del resultado obtenido después de cada acumulación.
  • Finalmente, la fórmula x-min> = 1 da: x = 1-min
public int minStartValue(int[] nums) {
    int prefix = 0, min = 0;
    for (int n : nums) {
        prefix += n;
        min = Math.min(min, prefix);
    }
    return 1 - min;
}

Análisis de complejidad.

  • Complejidad del tiempo: El ( norte ) O (n)
  • Complejidad espacial: El ( 1 ) O (1)

Publicado 714 artículos originales · elogiado 199 · 50,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_43539599/article/details/105616034
Recomendado
Clasificación