О теории и практике
hardsign — 26.07.2024На сайте leetcode.com собрано множество задач для программистов. Подобные задачи любят давать на собеседованиях для кодеров, поэтому решать их не только интересно, но и полезно. Мало того, код на любом из полутора десятков языков можно вбить прямо в окошко на сайте и тут же получить вердикт — правильно или нет решена задача.
На днях в одном из чатов возникла ссылка на задачу, которую надо было решить с некоторыми ограничениями. Я провёл пару часов, думая над алгоритмом, но в голову не шло ничего. Но потом кто-то из собеседников намекнул на правильное решение.
Я, конечно, написал программку, и она даже со второго раза откомпилировалась и правильно выполнилась. Но в настоящей программе, работающей в промышленной среде, я бы никогда такое решение не применил. Даже думать в эту сторону никогда бы не стал.
Интересно, а есть ли в других областях кроме IT такие задачи, которые ученику предлагается научиться решать, но применённый способ категорически не рекомендуется применять на практике?
Задача: в массиве положительное число встречается один или два раза. Вернуть массив, состоящий из чисел, которые в оригинальном массиве встречаются два раза. Время выполнения должно линейно зависеть от размера исходного массива, а объём используемой дополнительной памяти от размера массива зависеть не должен.
Решение: в качестве «дополнительной памяти» использовать знак чисел в исходном массиве, то есть менять значение исходных параметров, переданных по ссылке.
Реализация на языке C:
|
</> |