Menu
CoddyTech

Non-overlapping Intervals

המרווח i מתחיל ב־starts[i] ומסתיים ב־ends[i]. החזר את המספר הקטן ביותר של מרווחים שעליך להסיר כדי שאף שניים מהמרווחים שנותרו לא יחפפו. שני מרווחים שרק נוגעים זה בזה, כלומר אחד מסתיים בדיוק בנקודה שבה השני מתחיל, אינם חופפים.

פונקציה

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
תחילת כל מרווח
endsinteger-array
בסוף כל מרווח, באותו אינדקס כמו תחילתו
מחזירהinteger
מספר המרווחים המינימלי שיש להסיר כדי שהמרווחים הנותרים לא יחפפו

אילוצים

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • הטווחים אינם ממוינים. שני טווחים עשויים להיות זהים.

דוגמאות

קלט
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
פלט
2
הסבר
בסדר ההתחלה, המקטעים הם [1,4], [2,3], [3,6] ו-[5,7]. משאירים את [2,3] ואת [3,6], שרק נוגעים זה בזה, ומסירים את 2 האחרים. אי אפשר להשאיר שלושה: [1,4] חופף ל-[2,3], ו-[3,6] חופף ל-[5,7].
challenge icon

שאלת המשך

נניח שלכל מרווח יש ערך, ואתה רוצה למצוא את הערך הכולל הגדול ביותר מבין מרווחים שאינם חופפים. האם עדיין כדאי לבחור במרווח שמסתיים ראשון?

איפוס הקוד
def eraseOverlapIntervals(starts, ends):
    # כתבו את הקוד כאן

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

starts = [3, 1, 5, 2]
ends = [6, 4, 7, 3]

הפלט הצפוי

2