# Секция программирования в Тинькофф В рамках секции проверяем знание алгоритмов и структур данных и умение их применять. ## Материалы для подготовки ### Рекомендуем повторить все, что связано с алгоритмами: - основные структуры данных — строки, списки, деревья, ассоциативные массивы, векторы; - базовые алгоритмы — поиск элементов в коллекциях, обход деревьев, сортировки, динамическое программирование; - понятие сложности алгоритмов, O-нотация. #### Пример задачи Даны три неубывающих массива чисел. Найти число, которое присутствует во всех трех массивах. ``` Input: [1,2,4,5], [3,3,4], [2,3,4,5,6] Output: 4 ``` Целевое решение работает за O(p + q + r), где p, q, r – длины массивов, доп. память O(1), но эту информацию интервьюер не сообщает. ### Сайты, которые помогают решать задачи: - [LeetCode](https://leetcode.com/) - [HackerRank](https://www.hackerrank.com/) - [Codeforces](https://codeforces.com/) - [Topcoder](https://www.topcoder.com/) - [Timus Online Judge](http://acm.timus.ru/) ### Курсы: - [Алгоритмы, часть I](https://www.coursera.org/learn/algorithms-part1) - [Специализация «Структуры и алгоритмы данных»](https://www.coursera.org/specializations/data-structures-algorithms) - [Лекции курса «Алгоритмы и структуры данных» от Тинькофф Образование](https://www.youtube.com/playlist?list=PLjCCarnDJNssC82zhyeg8BxfhPG3b8iZ2) - [Конспекты по продвинутым алгоритмам и структурам данных](https://algorithmica.org/ru/) ### Книги: - Алгоритмы. Построение и анализ / Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн - Cracking the Coding Interview: 189 Programming Questions and Solutions / Gayle Laakmann McDowell