Şərtdəki siqnal və şablon
Şərtdəki siqnal və şablon

Şablon düşüncəsi

Çox alqoritmik məsələ az sayda şablonun variantıdır. Müvəffəqiyyətin yarısı şərtdəki siqnalı tanımaqdır: "sıralı massiv", "ardıcıl alt massiv", "ən qısa yol", "bütün kombinasiyalar", "ən yaxşı nəticə, alt məsələlər təkrarlanır". Sonra uyğun şablonun kodunu yazırsınız. Bu dərs xəritədir; hər şablonun ətraflı mövzusu kursda var.

Siqnaldan şablona

Şərtdəki siqnalŞablonTipik mürəkkəblik
sıralı massiv, cüt/üçlük axtariki göstəriciO(n)
ardıcıl alt massiv/alt sətir, uzunluq ksürüşən pəncərəO(n)
"var?", sayma, təkrar, cüt tapmaqhash map / setO(n)
sıralı və ya monoton, "ilk uyğun"ikili axtarışO(log n)
qrafda/şəbəkədə ən qısa yol (çəkisiz)BFSO(V + E)
komponent, dövr, bütün yollarDFSO(V + E)
"ən böyük k", axın ortasıheapO(n log k)
intervallar, birləşdirmə, üst-üstə düşməsort + sweepO(n log n)
bütün alt çoxluqlar/permutasiyalarbacktrackingeksponensial
optimal, alt məsələlər təkrarlanırdinamik proqramlaşdırmacədvəl ölçüsü

İki göstərici və sürüşən pəncərə

Sıralı massivdə iki ucdan başlayıb içəri sıxırıq: cəm çox isə sağı, az isə solu hərəkət etdiririk. Hər element ən çox bir dəfə keçilir: O(n). Pəncərədə yeni elementi əlavə edir, köhnəni çıxarırıq: təkrar cəmləmək əvəzinə O(1) yeniləmə. Ətraflı: iki göstərici, sürüşən pəncərə.