Volver a Complejidad
Complejidad

Sumas de Rango

Medio2 min de lectura

Responde muchas consultas de suma sobre un array. El trade-off clásico: gastar O(n) de memoria para bajar cada consulta a O(1).

Enunciado

Recibes un array arr de enteros y una lista de consultas. Cada consulta es un par [i, j] con dos índices, ambos incluidos.

Devuelve un array con la suma de arr[i] + arr[i+1] + ... + arr[j] para cada consulta, en el mismo orden en que llegaron.

Restricciones

  • 0 <= i <= j < len(arr) en todas las consultas.
  • La lista de consultas puede estar vacía. En ese caso, devuelve un array vacío.
  • Tiempo O(n + q), donde n es el largo del array y q la cantidad de consultas. Recorrer el rango en cada consulta es O(n · q) y no cuenta como solución.
  • Los valores pueden ser negativos.

Ejemplos

Con arr = [1, 2, 3, 4, 5]:

consultasumaresultado
[0, 2]1 + 2 + 36
[1, 3]2 + 3 + 49
[0, 4]todo el array15
[2, 2]solo arr[2]3

Esas cuatro consultas juntas devuelven [6, 9, 15, 3].

Pistas progresivas

0 de 3

    Intenta resolver el problema antes de ver pistas.

    Tu solución

    Cargando editor
    Escribe tu solución y pulsa Correr tests.

    Solución

    Intenta resolverlo primero. Ver la solución antes de tiempo recorta lo que aprendes.