0Pricing
Coding Interview Prep · درس

نافذة متغيرة بمؤشرين

توسيع النافذة وتقليصها لتحقيق شرط

نافذة متغيرة بمؤشرين درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

عندما تتمدد النافذة وتنكمش

لا تثبّت بعض المسائل طول النافذة. بل تكبر النافذة وتصغر للحفاظ على تحقق شرط معين، مثل بقاء المجموع دون حد معين.

مؤشران ونافذة واحدة

احتفظوا بفهرسين، هما left وright، لتحديد حافتي النافذة. يوسّع المؤشر right النافذة، بينما يتبعه left لتصغيرها عند الحاجة.

left = 0
window = 0

وسّعوا إلى اليمين

تحرّكوا عبر كل عنصر باتجاه اليمين وأدرجوه في النافذة. وحدّثوا حالتها الجارية، مثل إضافة القيمة الجديدة إلى مجموع.

for right in range(n):
    window += a[right]

صغّروا النافذة عند الحاجة

ما دامت النافذة تنتهك القاعدة، حرّكوا left إلى اليمين وأزيلوا ذلك العنصر. وبذلك يعود الشرط إلى التحقق دون الرجوع إلى الخلف.

    while window > limit:
        window -= a[left]
        left += 1

اقرؤوا النافذة الصالحة

عند انتهاء الحلقة الداخلية، تكون النافذة من left إلى right صالحة. ويكون طولها right ناقص left زائد واحد، وهي جاهزة للاستخدام.

    length = right - left + 1

سجّلوا أفضل نتيجة

حدّثوا إجابتكم باستخدام هذه النافذة الصالحة، وغالبًا ما تكون الأطول التي ظهرت حتى الآن. نفّذوا ذلك في كل تكرار حتى لا تفوتكم أي نافذة.

    best = max(best, right - left + 1)

لماذا الزمن خطي

يتحرك كل مؤشر إلى الأمام فقط ولا يعود إلى الخلف. ويتقدم left وright معًا بحد أقصى n خطوة، لذلك تكون عملية المرور كاملة بتعقيد O(n).

الشرط الرتيب

ينجح هذا الأسلوب عندما يجعل توسيع النافذة تحقيق الشرط أصعب فقط. وهذا السلوك الرتيب هو ما يسمح بعدم إعادة left إلى الخلف.

الأقصر في مقابل الأطول

للحصول على أقصر نافذة صالحة، صغّروا النافذة ما دام الشرط متحققًا وسجّلوا النتيجة قبل التوقف. وتبقى آلية المؤشرين نفسها.

    while window >= target:
        best = min(best, right - left + 1)
        window -= a[left]
        left += 1

احذروا النوافذ الفارغة

إذا كان التصغير قد يفرغ النافذة، فتحققوا من تجاوز left لـ right. وتأكدوا أيضًا من العثور على إجابة فعلية قبل إعادتها.

اكتشاف النمط

استخدموا نافذة متغيرة عندما تطلب المسألة إيجاد مقطع متصل هو الأطول أو الأقصر ويحقق شرطًا على عناصره.

تحقق سريع

تطبقون نافذة متغيرة بمؤشرين على مصفوفة حجمها n.

مراجعة

وسّعوا right لإدراج العناصر، وصغّروا left عند خرق القاعدة، وسجّلوا كل نافذة صالحة. وتحافظ المؤشرات التي تتحرك إلى الأمام فقط على التعقيد O(n). ✅

الأسئلة الشائعة

هل درس «نافذة متغيرة بمؤشرين» مجاني؟

نعم — نص درس «نافذة متغيرة بمؤشرين» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «نافذة متغيرة بمؤشرين»؟

توسيع النافذة وتقليصها لتحقيق شرط تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟

لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «نافذة متغيرة بمؤشرين»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟

نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مجاميع نافذة ثابتة الحجم
  2. نافذة متغيرة بمؤشرين
  3. أطول سلسلة فرعية دون تكرار
  4. عدّ النوافذ التي تحقق قاعدة
← العودة إلى Coding Interview Prep