Menu
CoddyTech

Subarray Sum Equals K

Você recebe um array de números inteiros nums e um número inteiro k. Conte os subarrays cujos elementos somam exatamente k. Um subarray é uma sequência de um ou mais elementos adjacentes. Dois subarrays são contados separadamente quando começam ou terminam em posições diferentes, mesmo que contenham os mesmos valores. Os valores podem ser negativos ou zero.

Função

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
o array de números inteiros, que pode conter valores negativos e zeros
kinteger
a soma que um subarray deve atingir para ser contado
Retornainteger
o número de subarrays cujos elementos somam k

Restrições

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Um array desse tamanho tem, no máximo, 200,010,000 subarrays, então a resposta cabe em um inteiro com sinal de 32 bits.

Exemplos

Entrada
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Saída
4
Explicação
Quatro sequências somam 7: [3, 4], [1, 3, 3], [3, 3, 1] e [3, 4, -7, 1, 3, 3]. Na última, o -7 cancela o 3 e o 4, e a soma volta a subir até 7 mais adiante, então uma sequência pode corresponder mesmo depois que sua soma ultrapassa k.

lock icon+17 testes ocultos ao enviar

challenge icon

Para ir além

Como você alteraria a solução para retornar o comprimento do subarray mais longo cuja soma seja k, ainda em tempo O(n)?

Redefinir código
def subarraySum(nums, k):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

4