Menu
CoddyTech

Longest Subarray with Sum K

Dado el arreglo de enteros nums y un objetivo k, devuelve la longitud del subarreglo más largo cuyos elementos suman exactamente k. Un subarreglo es un tramo de elementos consecutivos de al menos un elemento. Algunos valores pueden ser cero o menores que cero. Si ningún subarreglo suma k, devuelve 0.

Función

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
los números enteros que se van a buscar, incluidos los negativos y el cero
kinteger
la suma exacta que debe tener el subarreglo
Devuelveinteger
la longitud del subarreglo más largo cuya suma es k, o 0 si no existe ninguno

Restricciones

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Cada suma de prefijos se mantiene entre -2 × 108 y 2 × 108, así que los enteros de 32 bits son suficientes.
  • Devuelve 0 cuando ningún subarreglo sume k.

Ejemplos

Entrada
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Salida
5
Explicación
Tres secuencias suman 5: [2, 3] al final, [2, -1, 3, 1] al principio y [3, 1, -4, 2, 3] en los índices del 2 al 6. La última es la más larga, con 5 elementos.
challenge icon

Para ir más allá

¿Cómo encontrarías el subarreglo más largo cuya suma sea como máximo k, permitiendo que todavía haya valores negativos?

Restablecer código
def longestSubarrayWithSumK(nums, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

nums = [2, -1, 3, 1, -4, 2, 3]
k = 5

Salida Esperada

5