پنجره کشویی تکنیک حل مسئله ساختار داده و الگوریتم برای مسائلی است که روی آرایه ها یا لیست ها اعمال می شوند. حل این مشکلات با استفاده از رویکرد brute force در O(n²) یا O(n3) بدون دردسر است. با این حال، تکنیک پنجره کشویی می تواند پیچیدگی زمانی را به O(n) کاهش دهد.
ایده اصلی پشت تکنیک پنجره کشویی تبدیل دو حلقه تو در تو به یک حلقه است.
در زیر چند سرنخ اساسی برای شناسایی چنین مشکلی وجود دارد:
فرض کنید آرایه ای به صورت زیر داریم:
پنجره ی کشویی ما با سایز 3 به صورت زیر روی این آرایه حرکت میکند.
این تکنیکی است که می تواند در بسیاری از الگوریتم ها استفاده شود. در زیر گام های اساسی برای حل مشکلات مربوط به تکنیک پنجره کشویی آورده شده است:
مثالی برای برای یافتن بزرگترین مجموع پنج عنصر متوالی:
[ 5, 7, 1, 4, 3, 6, 2, 9, 2 ]
مسئله های زیادی برای استفاده از این تکنیک وجود دارد. در لینک Github میتوانید نمونه ای از این ها را ببینید.