Menu
CoddyTech

Last Stone Weight

LeichtHeappython iconjava iconcpp iconc iconjs icon+10

Du hast einen Haufen Steine, und stones[i] ist das Gewicht des Steins i. Nimm in jeder Runde die beiden schwersten Steine und schlage sie gegeneinander. Wenn sie gleich schwer sind, werden beide zerstört. Andernfalls wird der leichtere zerstört und der schwerere auf die Differenz der beiden Gewichte reduziert.

Schreibe eine Funktion namens lastStoneWeight, die so lange Runden spielt, bis höchstens ein Stein übrig ist, und das Gewicht dieses Steins 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, wenn 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 ergeben eine 3, dann ergeben 4 und 3 eine 1, dann ergeben 3 und 2 eine weitere 1. Die beiden Steine mit dem Gewicht 1 zerstören sich gegenseitig, sodass nichts übrig bleibt und die Antwort 0 lautet.

lock icon+13 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Die Gewichte betragen höchstens 1000. Kannst du diese Obergrenze 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
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

0