Menu
CoddyTech

Longest Subarray with Sum K

Dado o array de inteiros nums e um alvo k, retorne o comprimento do maior subarray cujos elementos somam exatamente k. Um subarray é uma sequência de elementos consecutivos, com pelo menos um elemento. Alguns valores podem ser zero ou negativos. Se nenhum subarray somar k, retorne 0.

Função

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
os números inteiros a serem pesquisados, incluindo negativos e zeros
kinteger
a soma exata que o subarray deve ter
Retornainteger
o comprimento do maior subarray cuja soma é k, ou 0 se nenhum tiver essa soma

Restrições

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Cada soma de prefixo permanece entre -2 × 108 e 2 × 108, então inteiros de 32 bits são suficientes.
  • Retorne 0 quando nenhum subarray somar k.

Exemplos

Entrada
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Saída
5
Explicação
Três sequências somam 5: [2, 3] no final, [2, -1, 3, 1] no início e [3, 1, -4, 2, 3] nos índices de 2 a 6. A última é a mais longa, com 5 elementos.
challenge icon

Para ir além

Como você encontraria o subarray mais longo cuja soma seja no máximo k, permitindo ainda valores negativos?

Redefinir código
def longestSubarrayWithSumK(nums, k):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

5