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]، فهما تتلامسان فقط، واحذف الفترتين الأخريين. لا يمكن الإبقاء على ثلاث فترات: [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