Menu
CoddyTech

4Sum

Du erhältst eine Liste von Ganzzahlen nums und eine Ganzzahl target. Gib jedes Vierertupel [a, b, c, d] zurück, dessen vier Werte an vier verschiedenen Positionen in nums stehen und zusammen target ergeben. Gib jedes Vierertupel mit seinen Werten in nicht absteigender Reihenfolge an. Wenn sich dieselben vier Werte an verschiedenen Positionen auswählen lassen, erscheint das Vierertupel trotzdem nur einmal. Sortiere die Antwort zuerst nach dem ersten Wert, dann nach dem zweiten und schließlich nach dem dritten. Wenn kein Vierertupel passt, gib eine leere Liste zurück.

Funktion

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
die Zahlen, aus denen man auswählen kann, mindestens eine
targetinteger
die Summe, die jedes Vierertupel erreichen muss
Gibt zurückinteger-2d-array
die eindeutigen Vierergruppen mit Summe target, jede davon sortiert und auch die Liste sortiert; eine leere Liste, falls es keine gibt

Einschränkungen

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • Die Summe beliebiger vier Werte liegt zwischen -4 × 108 und 4 × 108 und passt daher in eine 32-Bit-Ganzzahl.
  • Vierlinge, die dieselben vier Werte enthalten, zählen als einer.

Beispiele

Eingabe
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Ausgabe
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Erklärung
Jedes der vier Vierergruppen ergibt in der Summe 1, zum Beispiel -3 + (-1) + 2 + 3. Die beiden, die mit -3 beginnen, kommen zuerst und sind nach ihrem zweiten Wert geordnet: -1 vor 0.
challenge icon

Weiterführende Frage

Zähle die Mengen aus vier Positionen, deren Werte zusammen target ergeben, und nicht die unterschiedlichen Vierergruppen. Das zweite Beispiel hat 15. Schaffst du das in O(n²)?

Code zurücksetzen
def fourSum(nums, target):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

Erwartete Ausgabe

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]