تخطَّ إلى المحتوى

🧮 شرح هياكل البيانات والخوارزميات

المؤشّران والنافذة المنزلقة

الدرس 20 من 25· ⏱ 1 دقائق قراءة

المؤشّران (Two Pointers)

مؤشّران يتحرّكان في المصفوفة (المرتّبة عادةً) لحلّ المسألة في O(n) بدل O(n²).

مثال: هل يوجد زوج مجموعه = target في مصفوفة مرتّبة؟

def has_pair(arr, target):
    left, right = 0, len(arr) - 1
    while left < right:
        s = arr[left] + arr[right]
        if s == target:
            return True
        elif s < target:
            left += 1
        else:
            right -= 1
    return False

النافذة المنزلقة (Sliding Window)

نافذة متحرّكة لحساب نتيجة على نطاقات متتالية بكفاءة.

مثال: أكبر مجموع لنافذة بحجم k:

def max_sum(arr, k):
    window = sum(arr[:k])
    best = window
    for i in range(k, len(arr)):
        window += arr[i] - arr[i - k]   # أضف الجديد واطرح القديم
        best = max(best, window)
    return best

متى نستخدمها؟

مسائل المصفوفات/النصوص المتتالية (أطول سلسلة، أكبر مجموع، عدد العناصر) — من أشهر أنماط المقابلات.

🎯 التالي: البرمجة الديناميكية.

هل كان هذا الدرس مفيدًا؟