کدنامهمرجع‌های مهندسی نرم‌افزار، به فارسی

الگوریتم و حل مسئله

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*‎.

در نوبت نوشتنپروژهٔ پیچیده