Menu
CoddyTech

Asteroid Collision

SedangStackpython iconjava iconcpp iconc iconjs icon+10

Sederet asteroid melaju di sepanjang garis dengan kecepatan yang sama. Setiap nilai dalam asteroids menjelaskan satu asteroid: nilai absolutnya adalah ukurannya, dan tandanya menunjukkan arahnya, positif untuk ke kanan dan negatif untuk ke kiri.

Ketika asteroid yang bergerak ke kanan bertemu dengan asteroid yang bergerak ke kiri, keduanya bertabrakan. Asteroid yang lebih kecil meledak. Jika ukurannya sama, keduanya meledak. Asteroid yang bergerak ke arah yang sama tidak pernah bertemu. Kembalikan asteroid yang tersisa setelah semua tabrakan, dalam urutan semula. Hasilnya bisa kosong.

Fungsi

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
asteroid-asteroid dari kiri ke kanan, tanda untuk arah, nilai absolut untuk ukuran
Mengembalikaninteger-array
asteroid yang masih tersisa dari kiri ke kanan, mungkin tidak ada

Batasan

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

Contoh

Input
asteroids = [4, 9, -6, 2, -3]
Output
[4, 9]
Penjelasan
9 bertemu -6 dan menang. 2 bertemu -3 dan meledak, lalu -3 terus melaju menuju 9 dan ikut meledak. Tidak ada yang bergerak menuju apa pun, jadi tersisa 4 dan 9.
challenge icon

Pertanyaan lanjutan

Tumpukan menentukan asteroid mana yang bertahan. Bagaimana kamu juga melaporkan, untuk setiap asteroid yang meledak, indeks asteroid yang menghancurkannya?

Reset kode
def asteroidCollision(asteroids):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[4, 9]