Menu
CoddyTech

Subarray Sum Equals K

Otrzymujesz tablicę liczb całkowitych nums i liczbę całkowitą k. Policz podtablice, których elementy sumują się dokładnie do k. Podtablica to ciąg jednego lub większej liczby sąsiadujących elementów. Dwie podtablice liczą się osobno, gdy zaczynają się lub kończą na różnych pozycjach, nawet jeśli zawierają te same wartości. Wartości mogą być ujemne lub równe zero.

Funkcja

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
tablica liczb całkowitych, która może zawierać wartości ujemne i zera
kinteger
suma, jaką musi osiągnąć podtablica, aby została zaliczona
Zwracainteger
liczba podtablic, których elementy sumują się do k

Ograniczenia

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Tablica tej długości ma co najwyżej 200,010,000 podtablic, więc wynik mieści się w 32-bitowej liczbie całkowitej ze znakiem.

Przykłady

Wejście
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Wyjście
4
Wyjaśnienie
Cztery serie dają łącznie 7: [3, 4], [1, 3, 3], [3, 3, 1] i [3, 4, -7, 1, 3, 3]. W ostatniej z nich -7 równoważy 3 i 4, a suma później znów rośnie do 7, więc seria może pasować nawet wtedy, gdy jej suma przekroczyła k.

lock icon+17 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Jak zmieniłbyś rozwiązanie, aby zwracało długość najdłuższej podtablicy, której suma wynosi k, nadal w czasie O(n)?

Zresetuj kod
def subarraySum(nums, k):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

4