الگوریتم و حل مسئله
Algorithms & problem solvingالگوریتم برای قبولی در مصاحبه نیست — هرچند آنجا هم به کار میآید. برای این است که وقتی کدت روی ده رکورد سریع است و روی ده میلیون رکورد از کار میافتد، بدانی چرا و چه کار کنی. این مسیر روی «چطور به جواب رسیدیم» تمرکز میکند، نه «جواب چیست»، چون حفظ کردن الگوریتم بیفایده است و روشِ رسیدن به آن نیست.
پیشرفت تو
درصد هر فصل از دو چیز میآید: چقدر از بخشهایش را خواندهای (۵۵٪) و چند تمرینش را تیک زدهای (۴۵٪). همهچیز داخل مرورگر خودت میماند.
فصل
فصلها به هم وابستهاند و ترتیبشان معنا دارد. هر مسیر با پروژههای نهایی تمام میشود: ساده، متوسط، پیچیده.
روش حل مسئله
قبل از کد: بفهم، مثال بزن، ساده کن، تعمیم بده.
در نوبت نوشتنپیچیدگی زمانی و حافظه
Big-O بدون ریاضیات ترسناک — با شهود.
در نوبت نوشتنآرایه و رشته
دو اشارهگر، پنجرهٔ لغزان و پیشوند تجمعی.
در نوبت نوشتنhash
جدول hash، برخورد، و چرا O(1) همیشه O(1) نیست.
در نوبت نوشتنلیست پیوندی
reverse، تشخیص حلقه و اشارهگر سریع و کند.
در نوبت نوشتنپشته و صف
monotonic stack و صف دوسر.
در نوبت نوشتنبازگشت
اعتماد به فراخوانی بازگشتی، و درخت فراخوانی.
در نوبت نوشتنمرتبسازی
merge، quick، heap — و اینکه کِی خودت بنویسی.
در نوبت نوشتنجستجوی دودویی
ساده به نظر میرسد، و بیشتر آدمها اشتباه مینویسند.
در نوبت نوشتندرخت
پیمایش، BST و درخت متوازن.
در نوبت نوشتنheap و صف اولویت
k بزرگترین، ادغام و زمانبندی.
در نوبت نوشتنگراف ۱
نمایش، BFS و DFS.
در نوبت نوشتنگراف ۲
کوتاهترین مسیر: Dijkstra و topological sort.
در نوبت نوشتنحریصانه
کِی جواب میدهد و چطور ثابت کنیم.
در نوبت نوشتنبرنامهریزی پویا ۱
از بازگشت به یادداشتبرداری، قدمبهقدم.
در نوبت نوشتنبرنامهریزی پویا ۲
knapsack، LCS و بهینهسازی حافظه.
در نوبت نوشتنعقبگرد
n-queens، جایگشت و هرس فضای جستجو.
در نوبت نوشتنالگوریتم رشته
KMP، trie و hash غلتان.
در نوبت نوشتنالگوریتم در کار روزمره
کجا در کد واقعی به دردت میخورد.
در نوبت نوشتنمصاحبهٔ الگوریتمی
بلند فکر کردن، و روش رسیدن به جواب زیر فشار.
در نوبت نوشتنپروژهٔ ۱ — ساختمان دادهٔ خودت
hash map و LRU cache با تست.
در نوبت نوشتنپروژهٔ سادهپروژهٔ ۲ — موتور جستجوی کوچک
trie، رتبهبندی و پیشنهاد خودکار.
در نوبت نوشتنپروژهٔ متوسطپروژهٔ ۳ — مسیریاب
گراف واقعی شهری با Dijkstra و A*.
در نوبت نوشتنپروژهٔ پیچیده