Задачи Java: массивы, строки и коллекции10
Начните с вычисления, затем проследите, как задача меняет состояние, которое нужно хранить. Каждая основная задача содержит полное решение на Java, требования к входным данным и обоснование алгоритма.
Массивы и числовые границы
Примените знаки и сопоставьте индексы, прежде чем выбрать int или long. Затем перейдите к последовательности, произведения которой выходят за границы int.
- Суммирование значений со знаками в Java с IntStream
Объединяем абсолютные значения с соответствующими булевыми знаками с помощью IntStream. Проверяем взаимное сокращение, все отрицательные значения, диапазон int и равную длину массивов.
- Скалярное произведение массивов в Java: IntStream и границы целых чисел
Перемножаем соответствующие элементы массивов и суммируем их с IntStream. Разбираем знаки, диапазон int и необходимость расширять тип операндов до переполнения при умножении.
- Последовательность с шагом x в Java: расширение типа до умножения
Создание n значений от x до x*n через IntStream. Почему одного mapToLong недостаточно против переполнения int; положительный, отрицательный и нулевой шаг.
Строки и порядок преобразований
Для названий цифр используйте буквальную замену, сохраняйте порядок нормализации, затем удаляйте соседние пары одинаковых символов с помощью стека.
- Преобразование английских названий цифр через String.replace в Java
Литеральная замена в допустимой смеси цифр и слов от zero до nine. Различия replace и replaceAll, границы целых чисел и область применения.
- Новый ID в Java: порядок нормализации и усечение
Нормализация ID цепочкой Optional и циклом: последовательности точек, пустой результат фильтрации, очистка после усечения, дополнение и независимость от локали.
- Удаление соседних одинаковых пар в Java со стеком ArrayDeque
Удаление соседних одинаковых символов стеком: инвариант префикса, каскадные удаления, граница в миллион символов и затраты времени и памяти.
Подсчёт, состояние и порядок
Отличайте частоты имён от количества разных типов. Затем отслеживайте порядок недавних обращений к кешу и ранжируйте отношения с явным правилом для равных значений.
- Поиск участника, не завершившего забег, по частотам имён в Java
Вычитание частот финишировавших из частот участников через HashMap. Повторяющиеся имена без разности Set и условие ровно одного участника, не завершившего забег.
- Java Ponketmon: почему ответ равен min(разные типы, N/2)
Подсчёт разных типов через HashSet и доказательство достижимости границы выбора. Максимальное число типов и построение конкретной выборки — разные задачи.
- LRU-кеш в Java: порядок обращений в LinkedHashMap
Моделирование LRU через LinkedHashMap с порядком доступа: обновление попаданий, вытеснение, ключи без учёта регистра, нулевая ёмкость и предположения о стоимости.
- Сортировка долей неудач в Java: знаменатели, равенства и long
Подсчёт остановившихся и достигших этапа игроков, точное сравнение перекрёстными произведениями long, недостигнутые этапы и порядок при равных долях.