Menu
CoddyTech

Merge Intervals

تحصل على مجموعة من الفواصل، كلٌّ منها نطاق من الأعداد الصحيحة يبدأ من قيمة وينتهي عند أخرى. ادمج كل مجموعة من الفواصل المتداخلة في فاصل واحد يغطي المجموعة بأكملها، وأعِد الفواصل المدمجة مرتبةً حسب نقطة البداية. تُعد الفواصل التي تتلامس فقط، مثل [1, 4] و[4, 5]، متداخلة.

تأتي الفواصل في مصفوفتين لهما الطول نفسه: الفاصل i هو [starts[i], ends[i]]. أعد مصفوفة ثنائية الأبعاد، وهي قائمة من أزواج [start, end].

الدالة

mergeIntervals(starts: integer-array, ends: integer-array) → integer-2d-array
startsinteger-array
بداية كل فترة
endsinteger-array
نهاية كل فترة زمنية، عند الفهرس نفسه الذي تبدأ عنده
تُرجعinteger-2d-array
الفترات المدمجة على هيئة أزواج [start, end]، مرتبة حسب نقطة البداية

القيود

  • 1 ≤ starts.length == ends.length ≤ 104
  • 0 ≤ starts[i] ≤ ends[i] ≤ 104
  • تصل الفترات بأي ترتيب.
  • تُعَدّ الفترات التي تتلامس عند أحد طرفيها فقط متداخلة.

أمثلة

المدخلات
starts = [5, 1, 12, 3]ends = [7, 4, 14, 6]
المخرجات
[[1, 7], [12, 14]]
الشرح
حسب ترتيب البداية، تتداخل [1, 4] مع [3, 6]، التي تتداخل مع [5, 7]، لذا تصبح الفترات الثلاث [1, 7]. تبدأ [12, 14] بعد 7 وتبقى منفردة.
challenge icon

سؤال إضافي

تصل الفترات مدمجة بالفعل ومرتبة حسب نقطة البداية، وعليك إضافة فترة جديدة. هل يمكنك إرجاع القائمة المدمجة بزمن O(n)، من دون إعادة الفرز؟

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

اختبار #1

اختبار #2

الوسائط

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

الإخراج المتوقع

[[1, 7], [12, 14]]