5 шагов для улучшения вашей структуры данных и навыков алгоритмов

5 шагов для улучшения вашей структуры данных и навыков алгоритмов

23 февраля 2022 г.

Введение


Структура данных и алгоритмы — самые важные навыки, которые необходимо подготовить для собеседования в ведущей продуктовой компании. Чтобы выиграть этот мастерский ход и стать экспертом в [структурах данных и алгоритмах] (https://hackernoon.com/a-n00bs-guide-to-data-structures-and-algorithms-zg263xq2), требуется упорный труд. входы с щепоткой непрерывности. Шаги, описанные ниже, помогут вам быстро и эффективно развить и улучшить свои навыки DSA.


Шаги по улучшению структуры данных и алгоритмов


1. Основы


Есть известная цитата «Держи голову ясной», которая становится обязательным лозунгом при изучении структур данных. Например, если вы изучаете древовидную структуру данных, убедитесь, что основные термины понятны, такие как ветвь, родственный элемент, левое поддерево, правое поддерево и т. д.


  • Внедряйте и изучайте базовые функции во время изучения структуры данных, а затем, чтобы сэкономить время, можно использовать определенный класс для этой структуры данных.

  • Узнайте о различных алгоритмах, таких как принцип сортировки, разложение квадратного корня, теория множеств, [побитовые операции] (https://hackernoon.com/xor-the-magical-bit-wise-operator-24d3012ed821), теория графов, динамическое программирование , жадные алгоритмы и т.д.

  • Узнайте больше о теме, которую вы изучаете. Посетите как можно больше блогов или статей, чтобы понять различные варианты использования и структуры.

  • Практика и выполнение дополнительных практических вопросов по структуре данных добавит ей ясности.

  • Создание коротких заметок для своевременного пересмотра поможет вам улучшить логику.

  • Изучите, как данные представлены в компьютере, основы проектирования цифровой логики, булевой алгебры, компьютерной арифметики, представления с плавающей запятой, проектирования кэш-памяти. Попробуйте немного узнать о программировании на C и ассемблере.

2. Работа над построением логики


Когда мы говорим улучшить навыки программирования, мы имеем в виду пролить свет на логику при написании кода. Обычно люди сдаются при разработке логики программы и переходят к решениям. Если решение недоступно на нужном языке, становится еще сложнее разгадать загадку кода.


  • Потратьте немного времени, чтобы понять постановку задачи, затем приступайте к логике.

  • Напишите вопрос на бумаге, а затем попробуйте в пробном режиме разобраться в проблеме.

  • Напишите псевдокоды и сверьтесь с требованием задачи.

  • Выберите ключевые ограничения из проблемы и требуемой сложности времени и пространства.

  • Сначала напишите метод грубой силы, а затем начните его оптимизировать, используя различные структуры данных.

  • Определите крайние случаи, когда ваш примененный алгоритм может дать сбой.

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

  • Кроме того, вы можете потренироваться на доске и проверить контрольные примеры.

3. Алгоритмы Отработка


Изучение структуры данных будет недостаточным, чтобы повысить уровень, алгоритмы очень необходимы для повышения ваших навыков DSA. Прежде чем перейти к алгоритмам, необходимо иметь под рукой структуры данных.


Освоение алгоритмов делает вас конкурентоспособным программистом, потому что на этом уровне вы учитесь оптимизировать код, чтобы иметь минимальное время выполнения. Ниже приведены некоторые основные алгоритмы, которые могут оказаться полезными.


  • Графические алгоритмы: Поиск в ширину (BFS), поиск в глубину (DFS), алгоритм Дейкстры , алгоритм Флойда-Уоршалла, алгоритм Крускала и Прима, топологическая сортировка и др.

  • Динамическое программирование: задача о рюкзаке, самая длинная общая подпоследовательность, самая длинная возрастающая подпоследовательность, задача о сумме подмножеств, задача о разбиении и т. д.

  • Поиск и сортировка: бинарный поиск, слияние и быстрая сортировка, алгоритм KMP, сортировка подсчетом, сортировка Манахера и т. д.

  • Теория чисел: Критерий простоты, решето Эратосфена, сегментированное решето, алгоритм Уилсона, алгоритм Ро Полларда.

  • Математические алгоритмы: инверсия счета, разложение квадратного корня, каталонское число, венгерский алгоритм, логарифмическое возведение в степень и т. д.

  • Геометрия и сетевой поток: Выпуклая оболочка, сканирование Грэма, пересечение лжи, дерево интервалов, проблема стабильного брака, алгоритм Фулкерсона, алгоритм Эдмона Карпа, алгоритм Диника и т. д.

  • Алгоритмы по модулю: алгоритм Эйлера, модульное возведение в степень, китайская теорема об остатках и т. д.

4. Меньше - больше


Распространенная ошибка, которой следуют большинство программистов, заключается в том, что они нацелены на большее количество проблем, чем их первоначальная сила. Когда цель не достигается, это приводит к двум недостаткам — демотивации и неуверенности в себе.


Также случается, что для достижения цели человек не углубляется в вопрос, а сразу делает выводы.


  • Составьте план, чтобы не задавать слишком много вопросов в день. Планируйте так, чтобы все вопросы уровня сложности выполнялись в течение дня. Например, ответив на 3 простых, 3 средних и 2 сложных вопроса, вы сможете поддерживать темп и постоянство.

  • Чтобы выполнить текущую цель, не прыгайте сразу в решение. Это не улучшит логические навыки и повысит зависимость от решения.

  • Составьте шаблон вопросов таким образом, чтобы охватить больше вопросов среднего и сложного уровня. В конечном итоге это поможет вам шлифовать больше.

5. Пересматривайте, практикуйтесь и участвуйте


Пересмотрите понятия как можно больше, а затем попрактикуйтесь в различных тестовых вопросах на том же самом. Когда вы хорошо разберетесь в конкретной теме, участвуйте и решайте вопросы на HackerRank, CodeChef, Leetcode. Участие в проекте даст вам представление о том, что такое реальный опыт программирования.


  • Делайте краткие заметки о конкретной структуре данных с учетом временных и пространственных сложностей операций вставки, обновления и удаления.

  • Вовлечение себя в участие поможет вам понять различные параметры оценки, такие как - правильный ли ваш синтаксис, можете ли вы решить в отведенное время, понимаете ли вы постановку задачи и структуру данных, необходимую для решения вопроса, и т. д.

  • Практика работы с онлайн-средами разработки поможет вам освоиться в онлайн-среде кодирования.

  • Участвуя в конкурсе, вы научитесь оптимизировать свой код для лучшей пространственной и временной сложности.

Заключение


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



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE