О теории и практике

топ 100 блогов hardsign26.07.2024

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

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

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

Интересно, а есть ли в других областях кроме IT такие задачи, которые ученику предлагается научиться решать, но применённый способ категорически не рекомендуется применять на практике?

Задача: в массиве положительное число встречается один или два раза. Вернуть массив, состоящий из чисел, которые в оригинальном массиве встречаются два раза. Время выполнения должно линейно зависеть от размера исходного массива, а объём используемой дополнительной памяти от размера массива зависеть не должен.

Решение: в качестве «дополнительной памяти» использовать знак чисел в исходном массиве, то есть менять значение исходных параметров, переданных по ссылке.

Реализация на языке C:

/** * Note: The returned array must be malloced, assume caller calls free(). */ int* findDuplicates(int* nums, int numsSize, int* returnSize) { int *rc = malloc(sizeof(int)*numsSize); int rn = 0; int i; for (i = 0; iint index = abs(nums[i])-1; if (nums[index]>0) { nums[index] = -nums[index]; } else { rc[rn++] = index+1; } } *returnSize = rn; return rc; }

Оставить комментарий

Архив записей в блогах:
Хочу руны сделать сама. Сегодня ходила на Ангару. Выбрала берëзку, она немного ветром прогнута была. Покормила землю, где дерево пустило свои корни- так нужно, и сама спилила веточку, а потом замазала ранку землëй. Теперь у меня есть "посох Гендельфа"))))) А вообще лазила на крутой ...
Прочитав за пару лет нахождения в сообществе посты искоников,и ознакомившись с ...
Смысл заявления "Вектора" совершенно точно к медицине имеет крайне опосредованное отношение. И так понятно, что любая вакцина, как профилактирующая мера, не может быть эффективной на 100 процентов или даже на какую-то вменяемую величину. Вероятность все равно близка к фифти-фифти: ...
Для взрослых и детей с нулевыми знаниями языка придется предварительно пройти каникулярные летние языковые курсы – всего за 40 дней можно выучить польский, погрузившись в языковую среду. Курсы предполагают 4-часовые занятия в группах по 10-12 человек. Обучение проходит эффективно и ...
Итак, предлагаю вам принять участие в акции по проработки новой колоды Venice Tarot. Вот тут можно посмотреть: ТЫЦ!!! и вот здесь: ТЫДЫДЫЦ!!!Что собой представляет акция:Я делаю небольшой расклад и отвечаю абсолютно бесплатно на один ваш вопрос.Темы: ...