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

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

Выполнение некоторых из наборов вопросов для разминки действительно заставило меня вспомнить о требованиях критического мышления в программировании и о том, как сильно я люблю решать эти вопросы. Увы, прошло довольно много времени с тех пор, как я последний раз программировал, и моя память о программировании на C немного потускнела. Тем не менее, теперь я нашел новую мотивацию, чтобы продолжить свое путешествие по программированию на HackerRank и, возможно, в ближайшем будущем на другом веб-сайте технической оценки.

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

Ключевые указатели для себя:
- Установка уже проверенных значений = 0, чтобы указать, что пара уже рассматривалась.
- Помимо проверки между двумя соседними элементами массива, необходимо проверить значение, не равное 0 в чтобы не считать пару «0».

Ключевые подсказки для себя:
– Необходимо установить условную «контрольную точку» для проверки изменения направления похода
– Каждое изменение направления приводит к начальной проверке долины или горы, в зависимости от выше или ниже SL
- Однако есть необходимость проверить, является ли это одной и той же долиной, поэтому после первоначальной проверки инициализируйте ту же самую долину check = 1
- В любой момент времени, если движение › 0 , т. е. поднялись выше SL, инициализируйте ту же самую проверку впадины обратно на 0, чтобы любой последующий SL ‹ 0 после изменения направления был новой впадиной.

Примечание для себя
— время от времени обращайте внимание на размеры массива, необходимо уменьшить 1 из условной проверки, чтобы предотвратить дополнительный запуск цикла из-за особенностей i++;
— необъявленные значения массива все еще регистрируются как 0 в целочисленном объявленном массиве.

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

Вот и все на сегодня, первый день моего возвращения к программированию на языке Си.