Menu
CoddyTech

Asteroid Collision

MedioStackpython iconjava iconcpp iconc iconjs icon+10

Una fila di asteroidi si muove lungo una linea, tutti alla stessa velocità. Ogni valore in asteroids descrive un asteroide: il suo valore assoluto ne indica la dimensione e il segno la direzione, positivo per destra e negativo per sinistra.

Quando un asteroide che si muove verso destra incontra uno che si muove verso sinistra, si scontrano. Quello più piccolo esplode; se hanno la stessa dimensione, esplodono entrambi. Gli asteroidi che si muovono nella stessa direzione non si incontrano mai. Restituisci gli asteroidi rimasti dopo ogni scontro, nel loro ordine originale. Il risultato potrebbe essere vuoto.

Funzione

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
gli asteroidi da sinistra a destra, il segno indica la direzione, il valore assoluto la dimensione
Restituisceinteger-array
gli asteroidi sopravvissuti da sinistra a destra, eventualmente nessuno

Vincoli

  • 1 ≤ asteroids.length ≤ 104
  • -1000 ≤ asteroids[i] ≤ 1000
  • asteroids[i] ≠ 0

Esempi

Input
asteroids = [4, 9, -6, 2, -3]
Output
[4, 9]
Spiegazione
9 incontra -6 e vince. 2 incontra -3 ed esplode, poi -3 vola verso 9 ed esplode anche lui. Nient'altro si muove verso qualcos'altro, quindi restano 4 e 9.
challenge icon

Per approfondire

The stack risponde a quali asteroidi sopravvivono. Come potresti anche indicare, per ogni asteroide che esplode, l'indice dell'asteroide che l'ha distrutto?

Ripristina il codice
def asteroidCollision(asteroids):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

asteroids = [4, 9, -6, 2, -3]

Output atteso

[4, 9]