تصفح الدليل

ملخص Intervals للمقابلات البرمجية

مقدمة

أسئلة Intervals هي مجموعة فرعية من أسئلة الـArrays، حيث تُعطى Array من Arrays ثنائية العناصر (Interval) وتمثل القيمتان قيمة بداية وقيمة نهاية. تُعد أسئلة Intervals جزءاً من عائلة الـArrays، لكنها تتضمن تقنيات شائعة، لذا خُصص لها هذا القسم المستقل.

مثال على Array من Intervals: [[1, 2], [4, 7]].

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

أمور يجب الانتباه لها أثناء المقابلات

  • وضّح مع المُقابِل ما إذا كانت [1, 2] و[2, 3] تُعدان فترتين متداخلتين، لأن ذلك يؤثر في كيفية كتابتك لفحوصات التساوي.
  • وضّح ما إذا كانت الفترة [a, b] ستلتزم حتماً بـ a < b (أي أن a أصغر من b).

الحالات الحدّية

  • لا فترات
  • فترة واحدة
  • فترتان
  • فترات غير متداخلة
  • فترة محتواة بالكامل داخل فترة أخرى
  • فترات مكررة (نفس البداية والنهاية تماماً)
  • فترات تبدأ حيث تنتهي فترة أخرى تماماً — [[1, 2], [2, 3]]

تقنيات

رتّب Array الفترات حسب نقطة البداية

من الممارسات الشائعة في أسئلة Intervals ترتيب Array الفترات حسب قيمة البداية لكل فترة. هذه الخطوة بالغة الأهمية لحل مسألة Merge Intervals.

التحقق من تداخل فترتين

كن على دراية بكتابة شيفرة للتحقق من تداخل فترتين.

def is_overlap(a, b):
  return a[0] < b[1] and b[0] < a[1]

دمج فترتين

def merge_overlapping_intervals(a, b):
  return [min(a[0], b[0]), max(a[1], b[1])]

أسئلة أساسية

هذه أسئلة أساسية للتدريب عليها إذا كنت تدرس هذا الموضوع.

أسئلة تدريب موصى بها

هذه أسئلة موصى بالتدريب عليها بعد أن تدرس الموضوع وتتدرب على الأسئلة الأساسية.

المصدر والرخصة

هذه الصفحة منسوخة من Tech Interview Handbook للمؤلف يانغشون تاي (Yangshun Tay)، النسخة المرجعية e1d28e8، وتُستخدم بموجب رخصة MIT — حقوق النشر (c) 2017-Present ليانغشون تاي. نص الرخصة محفوظ محلياً في /licenses/tech-interview-handbook.txt.