Алгоритмы

Зачем?ЯндексТ-банкAvitoVKSberOzonYadroПодготовка
Собеседование:

Алгоритмы спрашивают на любую специальность: бэкенд, фронтенд, мл/дл и аналитика. На аналитика алгоритмы в основном требует только Яндекс в контесте и на собеседовании. На стажера и джуна алгоритмы must have. Чем выше грейд, тем требование к алгоритмам/математике ниже, а к умению решать рабочие задачи выше.

Экзамен:

Алгоритмы входят в программу экзаменов любой магистратуры по направлению ПМИ, входят в программу экзаменов ШАДа и других школ дополнительного образования.

Фундамент:

Не знать алгоритмы — все равно, что не знать таблицу умножения. Это такой же фундамент, как и математика (более глобально — это раздел математики), без которого невозможно двигаться и осваивать новые технологии. Не зря алгоритмы изучают несколько семестров на всяких топовых программах в духе фкн пми, фивт, ШАД и так далее.

Все задачи алгоритмический собеседований и контестов в Яндекс находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

НазваниеПринятиеУровень
Line Reflection34.20%Medium
Longest Subarray of 1’s After Deleting One Element60.00%Medium
Summary Ranges44.50%Easy
String Compression46.90%Medium
Zigzag Iterator61.00%Medium
Valid Palindrome40.70%Easy
One Edit Distance33.80%Medium
Subarray Sum Equals K43.80%Medium
Move Zeroes60.10%Easy
Group Anagrams63.20%Medium
Insert Delete GetRandom O(1)51.00%Medium
LRU Cache39.10%Medium
Generate Parentheses69.20%Medium
Reverse Linked List69.20%Easy
Permutation in String44.10%Medium
Merge k Sorted Lists45.80%Hard
Number of Recent Calls73.00%Easy
Valid Parentheses40.60%Easy
Max Consecutive Ones II48.60%Medium
Maximize Distance to Closest Person47.40%Medium
Design Hit Counter66.90%Medium
Merge Intervals44.20%Medium
Trapping Rain Water55.40%Hard
Two Sum48.20%Easy
Meeting Rooms II49.10%Medium
Find All Anagrams in a String47.10%Medium
Implement Rand10() Using Rand7()46.60%Medium
Symmetric Tree50.90%Easy
Longest Substring Without Repeating Characters32.70%Medium
Validate Binary Search Tree30.10%Medium
Number of Islands52.90%Medium
Flatten Nested List Iterator58.00%Medium
Consecutive Characters62.00%Easy
Interval List Intersections70.70%Medium
Implement Queue using Stacks56.60%Easy
Add Two Numbers37.70%Medium
Merge Sorted Array43.00%Easy
Merge Two Sorted Lists59.10%Easy
Max Consecutive Ones III62.30%Medium
Longest Palindromic Substring31.60%Medium
Jewels and Stones87.50%Easy
Lowest Common Ancestor of a Binary Tree54.00%Medium
Intersection of Two Arrays II54.40%Easy
Missing Number58.50%Easy
Evaluate Reverse Polish Notation41.40%Medium
Median of Two Sorted Arrays33.50%Hard
Simplify Path37.20%Medium
Is Subsequence50.10%Easy
Squares of a Sorted Array71.50%Easy
Remove Nth Node From End of List37.70%Medium
Perfect Squares51.50%Medium
Max Stack44.70%Easy
Lowest Common Ancestor of a Binary Tree III77.50%Medium
Longest Substring with At Most Two Distinct Characters52.20%Medium
Maximal Rectangle42.10%Hard
Search in Rotated Sorted Array37.30%Medium
Two Sum II – Input Array Is Sorted58.00%Easy
Remove Duplicates from Sorted Array48.10%Easy
Find Minimum in Rotated Sorted Array47.60%Medium
Range Sum of BST84.70%Easy
Partition Labels78.60%Medium
Product of Array Except Self63.40%Medium
Binary Tree Maximum Path Sum37.20%Hard
Continuous Subarray Sum26.70%Medium
Reverse Words in a String III77.20%Easy
Add Strings51.50%Easy
Palindrome Linked List45.50%Easy
First Unique Character in a String56.40%Easy

Контесты на стажировку в Яндекс за все года по всем направлениям

Все задачи алгоритмический собеседований и контестов в Т-банк находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

Все задачи алгоритмический собеседований и контестов в Авито находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

НазваниеПринятиеУровень
Top K Frequent Elements64%Medium
Add Two Numbers46%Medium
Add Strings51%Easy
Generate Parentheses77%Medium
Merge Sorted Array61%Easy
Add to Array-Form of Integer45%Easy
Two Sum53%Easy
Sum of Subarray Minimums53%Medium
Kth Largest Element in an Array67%Medium

Все задачи алгоритмический собеседований и контестов в VK находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

НазваниеПринятиеУровень
Maximize Distance to Closest Person48%Medium
Move Zeroes46%Easy
Merge Sorted Array62%Easy
Summary Ranges83%Easy
Valid Palindrome69%Easy
Longest Subarray of 1’s After Deleting One Element69% Medium

Все задачи алгоритмический собеседований и контестов в Sber находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

Все задачи алгоритмический собеседований и контестов в Озон находятся здесь. Ранжированы по частоте встречаемости на собесе, от самой частой до редкой. Принятие – это процент людей, которым задачу зачли. На нашем курсе по алгоритмам вас ждет подробный разбор этих задач (код + видео). 

НазваниеПринятиеУровень
LRU Cache 54%Medium
Шаг 1:

Для начала придется выучить какой-нибудь язык программирования, на котором вы будете решать алгоритмические задачи. Самым популярным выбором является питон: он простой и востребован в аналитике, мл&ds. Подойдет любой курс, например этот.  Его достаточно выучить на уровне базовых функций, операторов, структур данных.

Шаг 2:

Далее погружаемся алгосы. Начать стоит с книжки грокаем алгоритмы, читается за два вечера, и с понимания, как считается сложность алгоритма: всякие нотации. Потом проходим какой-нибудь структурированный ВУЗовский курс по алгосам. Например, на ютубе от Паши Маврина. .

Шаг 3:

Параллельно со всем этим решаем задачки на leetcode.  Да, по началу будет сложно и непонятно, но просто действуем по схеме: решаем задачу, гуглим решения, разбираем решения и пробуем решить аналогичную — как получилось разобраться, переходим к другой теме. Только так через боль будет прогресс. Здесь главное выучить основные 100 идей решения, все остальное просто их комбинация.