Алгоритм, реализующий стек со стандартными функциями push и pop и дополнительной функцией min за O(1)

Итак, оценка времени работы функция push, pop и min – O(1). Экстремумы изменяются не часто. Фактически минимум может поменяться только при добавлении нового элемента. Одно из решений – сравнивать добавляемые элементы…

Обложка поста

Какой проект написать для проверки и закрепления теоретических знаний?

В этом выпуске мы передаём экспертам вопрос о том, какой проект лучше запрограммировать для того, чтобы проверить свои теоретические знания после прочтения книг. Многие новички выбирают себе какой-нибудь язык по…

Обложка поста

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

Эта головоломка в своё время была популярна в JP Morgan Chase. Понятное дело, оказавшись в темноте, вы просто достанете сотовый телефон и воспользуетесь экраном как фонариком. Однако эта задачка появилась…

Обложка поста
Обложка поста

Почему большинство высокоуровневых языков медленно работают

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

Метод, определяющий, является ли одна строка перестановкой другой

Для начала нужно уточнить детали. Следует разобраться, является ли сравнение анаграмм чувствительным к регистру. То есть является ли строка «God» анаграммой «dog»? Также нужно выяснить, учитываются ли пробелы. Предположим, что для…

Голову подписчика Типичного программиста пересадят на другое тело

Два месяца назад врач С. Канаверо опубликовал свою статью об операции по пересадке человеческой головы на донорское тело в Международном журнале нейрохирурги. Российский программист, по совместительству подписчик паблика Типичный программист, Валерий…

Обложка поста

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

Чтобы получить 27 маленьких кубиков, вам нужно разрезать каждую из трех граней куба на три части. Для получения трех частей нужны два разреза. Очевидный ответ – сделать эти разрезы параллельно…

Обложка поста

Топ-30 лучших блогов о программировании и вычислительной технике

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

Обложка поста

Кому идти в айтишники — интервью со Станиславом Протасовым, сооснователем Parallels

— Вы — выпускник Физтеха. Кроме МФТИ какие российские вузы дают конкурентное техническое образование? — МГУ, МГТУ им. Баумана, МИФИ, МАИ — это если перечислять московские. СПбГУ, Новосибирский Государственный Университет — довольно сильные…

Разработайте класс, обеспечивающий блокировку так, чтобы предотвратить возникновение мертвой блокировки

Существует несколько общих способов предотвратить мертвые блокировки. Один из самых популярных — обязать процесс явно объявлять, в какой блокировке он нуждается. Тогда мы можем проверить, будет ли созданная блокировка мертвой…

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

Этот вопрос нам прислал студент третьего курса факультета информационных технологий и полностью он звучит так: “Учат всему понемногу и теперь остро встал вопрос: на чём программировать-то? Язык программирования не столь существенен…

Обложка поста