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.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

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

הפלט הצפוי

0