Post thumbnail

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

Post thumbnail

Полное условие задачи звучит так: дана матрица размером N*N, содержащая положительные и отрицательные числа. Напишите код поиска субматрицы с максимально возможной суммой. Существует множество решений этой задачи. Мы начнем с...
Читать дальше

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

Вам дан большой текстовый файл, в котором содержатся слова. Необходимо написать код, который позволит найти минимальное расстояние между любыми двумя словами. Достаточно ли будет O(n) времени? Сколько памяти понадобится для...
Читать дальше

Эту задачу также можно решить двумя способами: простым и сложным. Давайте рассмотрим оба решения. «Простое» решение: O(N4) Мы знаем, что длина стороны самого большого квадрата равна N и существует только...
Читать дальше

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

Post thumbnail

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

Post thumbnail

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

Эту задачу можно решить двумя способами. Выбор определяется компромиссом между эффективностью использования времени, памяти или сложностью кода. Простое решение Очень простое и эффективное (по времени) решение — создание хэш-таблицы, отображающей...
Читать дальше

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

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

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