Menu
CoddyTech

Last Stone Weight

LeichtHeappython iconjava iconcpp iconc iconjs icon+10

Du hast einen Steinhaufen, und stones[i] ist das Gewicht des Steins i. Nimm in jeder Runde die beiden schwersten Steine und zerschlage sie miteinander. Wiegen sie gleich viel, werden beide zerstört. Andernfalls wird der leichtere zerstört und der schwerere auf die Differenz der beiden Gewichte verkleinert.

Schreibe lastStoneWeight, das so lange Runden spielt, bis höchstens ein Stein übrig ist, und dessen Gewicht zurückgibt, oder 0, wenn kein Stein übrig ist.

Funktion

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
die Gewichte der Steine im Haufen
Gibt zurückinteger
das Gewicht des letzten Steins oder 0, falls keiner übrig ist

Einschränkungen

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

Beispiele

Eingabe
stones = [3, 9, 4, 6, 2]
Ausgabe
0
Erklärung
9 und 6 hinterlassen eine 3, dann hinterlassen 4 und 3 eine 1, dann hinterlassen 3 und 2 eine weitere 1. Die beiden 1-Steine zerstören sich gegenseitig, also ist die Antwort 0.
challenge icon

Weiterführende Frage

Die Gewichte betragen höchstens 1000. Kannst du diese Grenze nutzen, um die Aufgabe in O(n + W) Zeit abzuschließen, wobei W das größte Gewicht ist, und zwar ohne Heap?

Code zurücksetzen
def lastStoneWeight(stones):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

stones = [3, 9, 4, 6, 2]

Erwartete Ausgabe

0