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]