Menu
CoddyTech

3Sum

Du erhältst eine Liste von Ganzzahlen nums. Finde jedes Tripel [a, b, c] aus Werten, die von drei verschiedenen Positionen in nums stammen, mit a + b + c = 0. Schreibe jedes Tripel in nicht absteigender Reihenfolge (a ≤ b ≤ c) und liste jedes unterschiedliche Tripel nur einmal auf, auch wenn es durch mehrere Positionsauswahlen entsteht. Gib die Tripel zurück, sortiert nach ihrem ersten Wert und dann nach ihrem zweiten.

Funktion

threeSum(nums: integer-array) → integer-2d-array
numsinteger-array
die Liste der ganzen Zahlen mit mindestens drei Elementen
Gibt zurückinteger-2d-array
jedes unterschiedliche Tripel, dessen Summe 0 ergibt, jedes in nicht absteigender Reihenfolge, die Liste sortiert

Einschränkungen

  • 3 ≤ nums.length ≤ 3000
  • -105 ≤ nums[i] ≤ 105
  • Mindestens ein Tripel ergibt insgesamt 0.
  • Zwei Tripel sind gleich, wenn sie dieselben drei Werte enthalten.

Beispiele

Eingabe
nums = [-2, 0, 1, 1, -1, 2]
Ausgabe
[[-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]
Erklärung
-2 + 0 + 2, -2 + 1 + 1 und -1 + 0 + 1 ergeben alle 0. [-2, 1, 1] kann den Wert 1 zweimal verwenden, da die 1 an zwei Positionen steht, während [-1, 0, 1] mit einer der beiden 1en gebildet werden kann, aber nur einmal vorkommt.

lock icon+15 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Dasselbe Muster löst 4Sum: Fixiere zwei Werte und setze für den Rest zwei Zeiger ein. Kannst du es in O(n³) schreiben und auf jeder Ebene die Regeln zum Umgang mit Duplikaten korrekt einhalten?

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

Fall 1

Fall 2

Eingabe

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

Erwartet

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