Menu
CoddyTech

Asteroid Collision

MédioPilhapython iconjava iconcpp iconc iconjs icon+10

Uma fileira de asteroides voa ao longo de uma linha, todos na mesma velocidade. Cada valor em asteroids descreve um asteroide: seu valor absoluto representa seu tamanho, e seu sinal indica sua direção: positivo para a direita e negativo para a esquerda.

Quando um asteroide que se move para a direita encontra um que se move para a esquerda, eles colidem. O menor explode; se tiverem o mesmo tamanho, ambos explodem. Asteroides que se movem na mesma direção nunca se encontram. Retorne os asteroides que restarem após todas as colisões, na ordem original. O resultado pode estar vazio.

Função

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
os asteroides da esquerda para a direita, sinal para a direção, valor absoluto para o tamanho
Retornainteger-array
os asteroides restantes, da esquerda para a direita, possivelmente nenhum

Restrições

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

Exemplos

Entrada
asteroids = [4, 9, -6, 2, -3]
Saída
[4, 9]
Explicação
9 encontra -6 e vence. 2 encontra -3 e explode, e então -3 voa em direção a 9 e também explode. Nada mais se move em direção a nada, então 4 e 9 sobram.
challenge icon

Para ir além

A pilha responde quais asteroides sobrevivem. Como você também poderia informar, para cada asteroide que explode, o índice do asteroide que o destruiu?

Redefinir código
def asteroidCollision(asteroids):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

[4, 9]