Menu
CoddyTech

Last Stone Weight

קלערימהpython iconjava iconcpp iconc iconjs icon+10

יש לך ערימת אבנים, ו-stones[i] הוא המשקל של אבן i. בכל סיבוב, קח את שתי האבנים הכבדות ביותר ורסק אותן זו בזו. אם משקליהן זהים, שתיהן מושמדות. אחרת, האבן הקלה יותר מושמדת והאבן הכבדה יותר מצטמצמת להפרש בין שני המשקלים.

כתוב פונקציה בשם lastStoneWeight שממשיכה לשחק סיבובים עד שנותרת לכל היותר אבן אחת, ומחזירה את משקל האבן הזאת, או 0 כשלא נותרות אבנים.

פונקציה

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
המשקלים של האבנים בערימה
מחזירהinteger
המשקל של האבן האחרונה, או 0 אם לא נותרה אף אחת

אילוצים

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

דוגמאות

קלט
stones = [3, 9, 4, 6, 2]
פלט
0
הסבר
9 ו־6 משאירים 3, ואז 4 ו־3 משאירים 1, ואז 3 ו־2 משאירים עוד 1. שתי האבנים במשקל 1 משמידות זו את זו, ולכן לא נשאר דבר והתשובה היא 0.

lock icon+13 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

המשקלים הם לכל היותר 1000. האם תוכלו לנצל את החסם הזה כדי לסיים בזמן O(n + W), כאשר W הוא המשקל הגדול ביותר, בלי ערימה?

איפוס הקוד
def lastStoneWeight(stones):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

stones = [3, 9, 4, 6, 2]

צפוי

0