Menu
CoddyTech

Subarray Sum Equals K

Se te da un array de números enteros nums y un número entero k. Cuenta los subarrays cuyos elementos suman exactamente k. Un subarray es una secuencia de uno o más elementos contiguos. Dos subarrays cuentan por separado cuando empiezan o terminan en posiciones distintas, incluso si contienen los mismos valores. Los valores pueden ser negativos o cero.

Función

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
el arreglo de enteros, que puede contener valores negativos y ceros
kinteger
la suma que debe alcanzar un subarreglo para que se cuente
Devuelveinteger
el número de subarreglos cuyos elementos suman k

Restricciones

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Un arreglo de esta longitud tiene como máximo 200,010,000 subarreglos, por lo que la respuesta cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Salida
4
Explicación
Cuatro secuencias suman 7: [3, 4], [1, 3, 3], [3, 3, 1] y [3, 4, -7, 1, 3, 3]. En la última, el -7 cancela el 3 y el 4, y la suma vuelve a subir a 7 más adelante, así que una secuencia puede coincidir incluso después de que su suma haya superado k.

lock icon+17 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Cómo cambiarías la solución para que devuelva la longitud del subarreglo más largo cuya suma sea k, manteniendo un tiempo de ejecución de O(n)?

Restablecer código
def subarraySum(nums, k):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

nums = [3, 4, -7, 1, 3, 3, 1, -4]
k = 7

Esperado

4