Menu
CoddyTech

Asteroid Collision

متوسطالمكدسpython iconjava iconcpp iconc iconjs icon+10

يتحرك صف من الكويكبات على خط مستقيم، وكلها بالسرعة نفسها. تصف كل قيمة في asteroids كويكبًا واحدًا: فقيمتها المطلقة تمثل حجمه، وإشارتها تمثل اتجاهه؛ فالقيمة الموجبة تعني الاتجاه إلى اليمين، والسالبة تعني الاتجاه إلى اليسار.

عندما يلتقي كويكب متحرك إلى اليمين بآخر متحرك إلى اليسار، يتصادمان. ينفجر الأصغر؛ وإذا كانا بالحجم نفسه، ينفجر كلاهما. الكويكبات التي تتحرك في الاتجاه نفسه لا تلتقي أبدًا. أعد الكويكبات المتبقية بعد كل التصادمات، بترتيبها الأصلي. قد تكون النتيجة فارغة.

الدالة

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
الكويكبات من اليسار إلى اليمين، وإشارة للاتجاه، والقيمة المطلقة للحجم
تُرجعinteger-array
الكويكبات المتبقية من اليسار إلى اليمين، وربما لا يتبقى أيٌّ منها

القيود

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

أمثلة

المدخلات
asteroids = [4, 9, -6, 2, -3]
المخرجات
[4, 9]
الشرح
يلتقي 9 بـ -6 ويفوز. يلتقي 2 بـ -3 وينفجر، ثم يطير -3 نحو 9 وينفجر أيضًا. لا يتحرك أي شيء آخر نحو أي شيء، لذا يتبقى 4 و9.
challenge icon

سؤال إضافي

يُحدّد المكدّس الكويكبات التي تنجو. كيف يمكنك أيضًا الإبلاغ، لكل كويكب ينفجر، عن فهرس الكويكب الذي دمّره؟

إعادة ضبط الشيفرة
def asteroidCollision(asteroids):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

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

الإخراج المتوقع

[4, 9]