TGTGInsightаналитика telegramLIVE / telegram public index
← Хочу в Google
Хочу в Google avatar

TGINSIGHT POST

Post #74

@hiremegoogle

Хочу в Google

Просмотры3,130Количество просмотров
Опубликован14 сент.14.09.2020, 05:00
Содержимое поста

Содержимое

7 техник которые помогут тебе быстрее решать задачи Судя по итогам опроса большая часть аудитории канала испытывает проблемы с решением алгоритмических задач. Если ты активно решаешь задачи по алгоритмам в течении полу года и у тебя некоторые задачи отнимают от часа или больше времени, это нормально. Но это средний результат, и есть куда расти. Чтобы пройти собеседование тебе нужно научиться решать задачи за 15-20 минут. Это займет время, но это возможно и достижимо. Сегодня я хотел бы поделиться 7 техниками которые помогут тебе быстрее решать задачи. Техника 1. Решай много. Большинство задач решаются одними и теми же алгоритмами или их комбинациями. Порешав много задач ты сможешь изучить множество разных алгоритмов и встречая новую задачу ты сможешь уже без особого труда решить ее, так как ты видел уже похожую задачу ранее. Также большое количество задач это хорошее упражнение для мозга, который через некоторое время научиться уже автоматический кидать тебе готовые решения. Техника 2. Найди неоптимальное решение (brute force solution ). Попытайся найти хоть какое либо решение. Оно может быть не самым умным, не самым оптимальным, это нормально. Ты сможешь оптимизировать его позже. Неоптимальное решение это лучше чем отсутсвие решения. Техника 3. Думай на бумаге. Про это я писал тут https://t.me/hiremegoogle/65 Техника 4. Внимательно перечитай задачу. Часто в самой задаче дается подсказка на ее решение. К примеру дают “отсортированный массив” или “только цифры больше нуля” и т.д. Эти подробности мы часто упускаем когда думаем о решении, хотя такие детали могут помочь найти быстрое и простое решение. К примеру, если вам нужно найти цифру в “отсортированном массиве” или “массив с одним пиком” или “отсортированный массив который был сдвинут вправо или влево”, то самый оптимальный способ это использовать бинарный поиск. Поэтому внимательно читайте текст задачи. Техника 5. Используй HashMap. HashMap это очень крутая структура данных которая встречается в большом количестве задач. Когда будешь решать задачу, подумай, можно ли решить ее с помощью HashMap. Техника 6. Используй структуры данных. Так как у каждой структуры данных есть свои преимущества и недостатки, подумай какая структура данных может помочь тебе в решении данной задачи и от этого отталкивайся. К примеру, известная задача LRU Cache, где надо быстро (за O(1) время) добавлять и удалять пару key, value, но при этом нужно помнить порядок добавления ключей. Для хранения пары key, value можно использовать HashMap, это очевидно. Но как помнить порядок ключей? Добавлять ключи в массив? Сколько стоит удалить элемент из массива? O(1) если элемент из конца массива и O(N) все остальные позиции в массиве. O(N) это не далеко не O(1). Кто еще умеет хранить порядок, но также умеет удалять данные за O(1) время? Ответ LinkedList, так как для удаление достаточно переставить ссылки. Значит можно использовать связку HashMap+LinkedList и т.д. Техника 7. Посмотри решение Ну если совсем не прет, то не чурайся смотреть готовое решение. Это нормально. Все мы это делаем. Как понять когда пора? Если ты не можешь решить задачу в течении 1-2 дней, то смело смотри решение, не трать свое время, не надо никому ничего доказывать. Главные правила тут это: • Попытайся решить сам по началу. • Не пытайся просто слизать решение, почитай комментарии и попытайся понять логику за этим решением. • Почитай про алгоритмы и структуры данных которые были использованы. • Попробуй написать решение сам, своими руками, без copy/paste. • Попробуй решать похожие задачи. • Через некоторые время, попробуй повторно решить эту задачу, чтобы закрепить материал. Надеюсь эти техники помогут тебе решать задачи быстрее. Если у тебя есть еще техники делись в комментариях. #interviewtip#algo