Menu
CoddyTech

Subarray Sum Equals K

Du erhältst ein Array aus ganzen Zahlen nums und eine ganze Zahl k. Zähle die Teilarrays, deren Elemente sich genau zu k addieren. Ein Teilarray ist eine Folge aus einem oder mehreren benachbarten Elementen. Zwei Teilarrays zählen separat, wenn sie an unterschiedlichen Positionen beginnen oder enden, selbst wenn sie dieselben Werte enthalten. Die Werte können negativ oder null sein.

Funktion

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
das Array aus ganzen Zahlen, das negative Werte und Nullen enthalten kann
kinteger
die Summe, die ein Teilarray erreichen muss, um gezählt zu werden
Gibt zurückinteger
die Anzahl der Teilarrays, deren Elemente zusammen k ergeben

Einschränkungen

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Ein Array dieser Länge hat höchstens 200,010,000 Teilarrays, daher passt das Ergebnis in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiele

Eingabe
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Ausgabe
4
Erklärung
Vier Folgen ergeben zusammen 7: [3, 4], [1, 3, 3], [3, 3, 1] und [3, 4, -7, 1, 3, 3]. In der letzten Folge heben die -7 die 3 und die 4 auf, und die Summe steigt später wieder auf 7, sodass eine Folge auch dann passen kann, wenn ihre Summe bereits über k gestiegen ist.

lock icon+17 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wie würdest du die Lösung so ändern, dass sie die Länge des längsten Teilarrays zurückgibt, dessen Summe k ergibt, und weiterhin in O(n) Zeit läuft?

Code zurücksetzen
def subarraySum(nums, k):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

4