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

Задачи повышенной сложности

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

Евгений Туренко
Евгений Туренко
0

Задача про обиженного короля и сотню звездочётов

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

0

Задача по проектированию чат-сервера

Как бы вы подошли к проектированию чат-сервера? Предоставьте информацию о компонентах внутренней системы (backend), классах и методах. Перечислите самые трудные задачи, которые необходимо решить.

Оля Пестерева
Оля Пестерева
0

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

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

Александр Курилкин
Александр Курилкин
0

Посчитайте количество вложенных друг в друга отрезков

На прямой даны N отрезков (в реальной жизни это могут быть промежутки времени, например), которые заданы координатами их левого и правого конца. Для каждого данного отрезка необходимо узнать, сколько из данных отрезков полностью находятся в нем. Один отрезок полностью содержится во втором, если левый конец первого отрезка находится правее левого конца второго отрезка, а правый…

0

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

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

0

Напишите код, который позволяет найти минимальное расстояние (выражаемое количеством слов) между любыми двумя словами в файле

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

0

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

Эту задачу также можно решить двумя способами: простым и сложным. Давайте рассмотрим оба решения.

0

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

Одно из возможных решений — использовать две кучи разных приоритетов: максимальная куча (maxHeap) для значений выше среднего и минимальная куча (minHeap) для значений ниже среднего. Это позволит разделить элементы примерно поровну с двумя значениями — вершинами куч. Теперь найти среднее значение очень просто.

0

Напишите метод, тасующий карточную колоду

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

Обложка: Напишите метод, тасующий карточную колоду
0

Почему так тяжело учиться программировать

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

0

Опишите алгоритм для нахождения миллиона наименьших чисел в наборе из миллиарда чисел. Память компьютера позволяет хранить весь миллиард чисел

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

0

Напишите функцию суммирования двух целых чисел без использования «+» и других арифметических операторов

Первое, что приходит в голову, — обработка битов. Почему? У нас нет выбора — нельзя использовать оператор «+». Так что будем суммировать числа так, как это делают компьютеры!

Спящий кот

Увы, но нам не удалось найти больше постов