Menu
CoddyTech
flag Ar iconالعربيةdown icon

Non-overlapping Intervals

تحصل على قائمة من الفترات الزمنية على شكل مصفوفتين: تمتد الفترة i من starts[i] إلى ends[i]. احذف أقل عدد ممكن من الفترات بحيث لا تتداخل أي فترتين من الفترات المتبقية. الفترتان اللتان تتلامسان فقط، بحيث تنتهي إحداهما عند النقطة نفسها التي تبدأ عندها الأخرى، لا تتداخلان.

اكتب دالة باسم eraseOverlapIntervals تُعيد أصغر عدد من الفترات التي عليك حذفها.

الدالة

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]، وأي ثلاث فترات من الأربع تتضمن أحد هذين الزوجين.

lock icon+17 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

افترض أن لكل فترة أيضًا قيمة، وأنك تريد أكبر مجموع للقيم بين الفترات التي لا تتداخل. هل يظل الاحتفاظ بالفترة التي تنتهي أولًا مجديًا؟ ما الذي ستستخدمه بدلًا من ذلك؟

إعادة ضبط الشيفرة
def eraseOverlapIntervals(starts, ends):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

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

المتوقع

2