Java | LeetCode
Kanalga Telegram’da o‘tish
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish6 391
Obunachilar
-924 soatlar
-217 kun
-6230 kun
Ma'lumotlar yuklanmoqda
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Oktabr '26Okt '26
Oktabr '26
+29
0 kanalda
Sentabr '26
+29
0 kanalda
Get PRO
Avgust '26
+27
0 kanalda
Get PRO
Iyul '26
+33
0 kanalda
Get PRO
Iyun '26
+42
1 kanalda
Get PRO
May '26
+33
0 kanalda
Get PRO
Aprel '26
+36
0 kanalda
Get PRO
Mart '26
+44
0 kanalda
Get PRO
Fevral '26
+49
0 kanalda
Get PRO
Yanvar '26
+54
1 kanalda
Get PRO
Dekabr '25
+47
0 kanalda
Get PRO
Noyabr '25
+98
0 kanalda
Get PRO
Oktabr '25
+98
0 kanalda
Get PRO
Sentabr '25
+101
1 kanalda
Get PRO
Avgust '25
+164
2 kanalda
Get PRO
Iyul '25
+176
3 kanalda
Get PRO
Iyun '25
+139
0 kanalda
Get PRO
May '25
+190
2 kanalda
Get PRO
Aprel '25
+219
0 kanalda
Get PRO
Mart '25
+264
1 kanalda
Get PRO
Fevral '25
+358
6 kanalda
Get PRO
Yanvar '25
+362
53 kanalda
Get PRO
Dekabr '24
+221
0 kanalda
Get PRO
Noyabr '24
+249
0 kanalda
Get PRO
Oktabr '24
+478
12 kanalda
Get PRO
Sentabr '24
+1 577
330 kanalda
Get PRO
Avgust '24
+291
0 kanalda
Get PRO
Iyul '24
+1 602
219 kanalda
Get PRO
Iyun '24
+2 260
232 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 28 Oktabr | 0 | |||
| 27 Oktabr | 0 | |||
| 26 Oktabr | +2 | |||
| 25 Oktabr | +1 | |||
| 24 Oktabr | 0 | |||
| 23 Oktabr | +3 | |||
| 22 Oktabr | 0 | |||
| 21 Oktabr | 0 | |||
| 20 Oktabr | +2 | |||
| 19 Oktabr | 0 | |||
| 18 Oktabr | +2 | |||
| 17 Oktabr | +1 | |||
| 16 Oktabr | +1 | |||
| 15 Oktabr | 0 | |||
| 14 Oktabr | +2 | |||
| 13 Oktabr | +1 | |||
| 12 Oktabr | 0 | |||
| 11 Oktabr | +2 | |||
| 10 Oktabr | +1 | |||
| 09 Oktabr | +3 | |||
| 08 Oktabr | +1 | |||
| 07 Oktabr | +1 | |||
| 06 Oktabr | +1 | |||
| 05 Oktabr | +1 | |||
| 04 Oktabr | +1 | |||
| 03 Oktabr | +2 | |||
| 02 Oktabr | 0 | |||
| 01 Oktabr | +1 |
Kanal postlari
Задача: 397. Integer Replacement
Сложность: medium
К положительному целому числу n можно применить одну из следующих операций: если n четное, замените n на n / 2. если n нечетное, замените n на n + 1 или n - 1. верните минимальное количество операций, необходимых для того, чтобы n стало 1.
Пример:
Input: n = 8 Output: 3 Explanation: 8 -> 4 -> 2 -> 1👨💻 Алгоритм: 1⃣Начните с данного числа n и выполните одну из следующих операций: Если n четное, замените n на n / 2. Если n нечетное, замените n на n + 1 или n - 1. 2⃣Используйте метод динамического программирования или жадный метод, чтобы найти минимальное количество операций, необходимых для достижения n = 1. Определите, какая операция (n + 1 или n - 1) является более эффективной для минимизации количества шагов. 3⃣Продолжайте выполнять выбранные операции, пока n не станет равным 1. Считайте количество выполненных операций и верните это значение как результат. 😎 Решение:
class Solution {
public int integerReplacement(int n) {
Map<Long, Integer> memo = new HashMap<>();
return helper(n, memo);
}
private int helper(long n, Map<Long, Integer> memo) {
if (n == 1) return 0;
if (memo.containsKey(n)) return memo.get(n);
if (n % 2 == 0) {
memo.put(n, 1 + helper(n / 2, memo));
} else {
memo.put(n, 1 + Math.min(helper(n + 1, memo), helper(n - 1, memo)));
}
return memo.get(n);
}
}
Ставь 👍 и забирай 📚 Базу знаний| 2 | Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис
✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы.
Выберите формат, который подходит именно вашей команде:
✅ Базовый ИИ. Закладываем фундамент
✅ ИИ под роль. Навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды.
✅ ИИ-трансформация. Для компаний, которые хотят внедрять нейросети системно.
✅ ИИ-агенты. Для команд, которые хотят собирать собственных ИИ-агентов: от основ генеративного ИИ до рабочего прототипа без программирования.
Библиотека ИИ-навыков для команды — бесплатно при покупке любой программы ИИ-тренингов до конца сентября
Узнать больше
#реклама 16+
practicum.yandex.ru
О рекламодателе | 254 |
| 3 | Задача: 284. Peeking Iterator
Сложность: medium
Создайте итератор, который поддерживает операцию peek (просмотр следующего элемента) на существующем итераторе, помимо операций hasNext (проверка наличия следующего элемента) и next (получение следующего элемента).
Реализуйте класс PeekingIterator:
PeekingIterator(Iterator<int> nums): Инициализирует объект с заданным итератором целых чисел.
int next(): Возвращает следующий элемент в массиве и перемещает указатель на следующий элемент.
boolean hasNext(): Возвращает true, если в массиве еще есть элементы.
int peek(): Возвращает следующий элемент в массиве без перемещения указателя.
Пример:
Input
["PeekingIterator", "next", "peek", "next", "next", "hasNext"]
[[[1, 2, 3]], [], [], [], [], []]
Output
[null, 1, 2, 2, 3, false]
Explanation
PeekingIterator peekingIterator = new PeekingIterator([1, 2, 3]); // [1,2,3]
peekingIterator.next(); // return 1, the pointer moves to the next element [1,2,3].
peekingIterator.peek(); // return 2, the pointer does not move [1,2,3].
peekingIterator.next(); // return 2, the pointer moves to the next element [1,2,3]
peekingIterator.next(); // return 3, the pointer moves to the next element [1,2,3]
peekingIterator.hasNext(); // return False
👨💻 Алгоритм:
1⃣Инициализация итератора:
В конструкторе класса PeekingIterator инициализируйте итератор и проверьте, есть ли следующий элемент. Если есть, установите его как next, иначе установите next в null.
2⃣Операция peek:
Метод peek возвращает значение next, не перемещая указатель итератора.
3⃣Операции next и hasNext:
Метод next возвращает текущее значение next, обновляет next к следующему элементу в итераторе и перемещает указатель итератора. Если нет следующего элемента, бросает исключение NoSuchElementException.
Метод hasNext возвращает true, если next не равно null, и false в противном случае.
😎 Решение:
import java.util.Iterator;
import java.util.NoSuchElementException;
class PeekingIterator implements Iterator<Integer> {
private Iterator<Integer> iter;
private Integer next = null;
public PeekingIterator(Iterator<Integer> iterator) {
if (iterator.hasNext()) {
next = iterator.next();
}
iter = iterator;
}
public Integer peek() {
return next;
}
@Override
public Integer next() {
if (next == null) {
throw new NoSuchElementException();
}
Integer toReturn = next;
next = null;
if (iter.hasNext()) {
next = iter.next();
}
return toReturn;
}
@Override
public boolean hasNext() {
return next != null;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 229 |
| 4 | Задача: 1360. Number of Days Between Two Dates
Сложность: easy
Напишите программу для подсчета количества дней между двумя датами.
Даты даны в виде строк в формате YYYY-MM-DD, как показано в примерах.
Пример:
Input: date1 = "2019-06-29", date2 = "2019-06-30"
Output: 1
👨💻 Алгоритм:
1⃣Преобразование строк в даты:
Используйте встроенные функции для преобразования строковых представлений дат в объекты дат.
2⃣Вычисление разницы в днях:
Вычислите разницу между двумя объектами дат в днях.
3⃣Возвращение результата:
Верните абсолютное значение разницы в днях для получения положительного числа.
😎 Решение:
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Solution {
public int daysBetweenDates(String date1, String date2) {
LocalDate d1 = LocalDate.parse(date1);
LocalDate d2 = LocalDate.parse(date2);
return (int) Math.abs(ChronoUnit.DAYS.between(d1, d2));
}
}
Ставь 👍 и забирай 📚 Базу знаний | 278 |
| 5 | 🎃 Хеллоуинская акция на easyoffer
В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешься всю жизнь
🍬Что внутри мешка с угощениями:
– База вопросов и задач из собеседований
– Примеры видео-ответов на вопросы
– Записи реальных собеседований
– Тренажёры «Проработка вопросов» и «Реальное собеседование»
– Аналитика требований из вакансий
– Автоотклики на вакансии
👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro | 315 |
| 6 | Как зарабатывать на мобильной игре
Как привлекать пользователей, работать с монетизацией и развивать мобильную игру в 2026 году?
Обсудим вместе с экспертами игровой индустрии России на RuStore Mobile GameDev Conf. 2 ноября, Москва + онлайн.
Участие бесплатное, по регистрации
Зарегистрироваться
#реклама 16+
rustore.ru
О рекламодателе | 330 |
| 7 | Задача: №16. 3Sum Closest
Сложность: medium
Учитывая целочисленный массив nums длины n и целочисленную target, найдите три целых числа в nums, сумма которых наиболее близка к target.
Возвращается сумма этих трех чисел.
Гарантируется, что существует ровно одно решение.
Пример:
Input: licensePlate = "1s3 PSt", words = ["step","steps","stripe","stepple"] Output: "steps"
👨💻 Алгоритм:
1⃣Отсортировать массив nums.
2⃣Для каждого элемента использовать два указателя: один в начале оставшегося массива, другой — в конце.
3⃣Обновлять текущую минимальную разницу и ближайшую сумму при необходимости, сдвигая указатели в зависимости от того, насколько текущая сумма отклоняется от target.
😎 Решение:
class Solution {
public int threeSumClosest(int[] nums, int target) {
int n = nums.length;
int closest = 0;
int max = Integer.MAX_VALUE;
Arrays.sort(nums);
for(int i = 0; i < n - 2; i++) {
int j = i + 1;
int k = n - 1;
while(j < k) {
int sum = nums[i] + nums[j] + nums[k];
if(sum == target)
return sum;
else if(sum < target)
j++;
else
k--;
int diff = Math.abs(sum - target);
if(diff < max) {
max = diff;
closest = sum;
}
}
}
return closest;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 323 |
| 8 | Braun — технологии для безупречного ухода
✨Оригинальные бритвы, триммеры и эпиляторы
✨ Точность, комфорт и стиль — вместе с Braun
Купить
#реклама
market.yandex.ru
О рекламодателе | 357 |
| 9 | ОСАГО по подписке — без оплаты за год сразу
Оформите ОСАГО один раз и забудьте о продлении. Кешбэк 100% за первый месяц
Заказать
Финансовые услуги оказывает: ПАО СК «Росгосстрах»,СПАО «Ингосстрах» и др..
#реклама
care.yandex.ru
О рекламодателе | 324 |
| 10 | Задача: 523. Continuous Subarray Sum
Сложность: medium
Дан целочисленный массив nums и целое число k. Верните true, если в nums есть хорошая подмассив, или false в противном случае.
Хороший подмассив — это подмассив, который:
имеет длину не менее двух, и
сумма элементов подмассива является кратной k.
Учтите:
Подмассив — это непрерывная часть массива.
Целое число x является кратным k, если существует целое число n такое, что x = n * k. Число 0 всегда является кратным k.
Пример:
Input: nums = [23,2,4,6,7], k = 6
Output: true
Explanation: [2, 4] is a continuous subarray of size 2 whose elements sum up to 6.
👨💻 Алгоритм:
1⃣Инициализируйте целое число prefixMod = 0 и хеш-таблицу modSeen. Инициализируйте modSeen[0] значением -1, чтобы учесть начальное значение prefixMod.
2⃣Итеративно пройдите по всем элементам массива nums.
3⃣Вычислите prefixMod как (prefixMod + nums[i]) % k. Если prefixMod существует в хеш-таблице: Если размер самого длинного подмассива с модулем k составляет не менее 2, верните true. Если prefixMod не существует в хеш-таблице: Установите modSeen[prefixMod] = i. Если после завершения итерации не найден хороший подмассив, верните false.
😎 Решение:
import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
int prefixMod = 0;
Map<Integer, Integer> modSeen = new HashMap<>();
modSeen.put(0, -1);
for (int i = 0; i < nums.length; i++) {
prefixMod = (prefixMod + nums[i]) % k;
if (modSeen.containsKey(prefixMod)) {
if (i - modSeen.get(prefixMod) > 1) {
return true;
}
} else {
modSeen.put(prefixMod, i);
}
}
return false;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 576 |
| 11 | Услуги дата-центра в Москве
Размещение и аренда серверного оборудования в дата-центре.
👍 4 современных дата-центра в Москве.
👍 Лицензированный оператор связи.
👍 Индивидуальные конфигурации выделенных серверов под задачи клиента.
👍 Круглосуточная техническая поддержка в Телеграм, без ботов.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе | 356 |
| 12 | 🔥 Скрытые вакансии с удаленной работой для Java разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.
🔹 Java Jobs | Вакансии
🔸 Все каналы с вакансиями | 487 |
| 13 | Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис
✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы.
Выберите формат, который подходит именно вашей команде:
✅ Базовый ИИ. Закладываем фундамент
✅ ИИ под роль. Навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды.
✅ ИИ-трансформация. Для компаний, которые хотят внедрять нейросети системно.
✅ ИИ-агенты. Для команд, которые хотят собирать собственных ИИ-агентов: от основ генеративного ИИ до рабочего прототипа без программирования.
Библиотека ИИ-навыков для команды — бесплатно при покупке любой программы ИИ-тренингов до конца сентября
Узнать больше
#реклама 16+
practicum.yandex.ru
О рекламодателе | 344 |
| 14 | 🔥 Почему ты получаешь отказ после «вроде норм собеса»?
Дело не всегда в знаниях. Можно знать правильный ответ, но не понимать, что именно хочет услышать интервьюер и как убедительно донести свою мысль.
Чтобы помочь с этим, ребята из ШОРТКАТ собрали 50 сложных вопросов с Java-собеседований и ответы сильного кандидата.
Они проанализировали более 100 мок-интервью и собрали в одном файле реальные вопросы и примеры ответов, на которые стоит ориентироваться при подготовке 🔥
🎁 Забирай файл бесплатно в боте 👉 @shortcut_sh_bot
А заодно сможешь зарегистрироваться на бесплатное тестовое собеседование с Java-разработчиком!
На эфире ты сможешь:
→ услышать, какие вопросы задают на собеседованиях в топовые компании;
→ посмотреть на интервью вживую;
→ лично задать вопросы ментору из бигтеха.
Забирай материалы и используй возможность подготовиться к следующему собесу 👇
@shortcut_sh_bot
Реклама.
О рекламодателе. | 323 |
| 15 | Открытый урок: бизнес-логика в микросервисах
Разработка в микросервисах — это не только разбиение на сервисы, но и грамотное распределение логики.
22 октября в 19:00 мск — открытый урок для разработчиков и архитекторов. Узнаете, где должна жить бизнес-логика. Запишитесь!
Зарегистрироваться
#реклама 16+
otus.ru
О рекламодателе | 320 |
| 16 | Получите удаленную подработку, где платят 5.000 ₽ в день
Нужно заполнять карточки товаров на ВБ, писать описания товаров и отвечать на отзывы.
Все это вы делаете из дома. Бесплатная регистрация только сегодня!
Опыт, знания и город — не важны! От вас требуется только телефон.
Занятость 3-6 часов в день.
График свободный. Заработок зависит от вас. Над вами нет никаких начальников. А самое важное, у вас не будет нужды просыпаться в 6 утра на работу.
Для старта в профессии нужно пройти бесплатное 3х-дневное обучение:
✅ Прямые эфиры, где вы поймете суть профессии
✅ Домашки с проверкой и оплатой бонусами
✅ Платим 10 тыс за каждую выполненную домашку
Все кто пройдет курс, получат сертификат от школы с образовательной лицензией.
⚡ Начинаем в понедельник!
Жмите снизу "Зарегистрироваться":
Зарегистрироваться
#реклама 16+
course.wildcard.ru
О рекламодателе | 297 |
| 17 | Задача: 745. Prefix and Suffix Search
Сложность: hard
Создайте специальный словарь, в котором поиск слов осуществляется по префиксу и суффиксу. Реализуйте класс WordFilter: WordFilter(string[] words) Инициализирует объект со словами в словаре. f(string pref, string suff) Возвращает индекс слова в словаре, которое имеет префикс pref и суффикс suff. Если существует более одного допустимого индекса, возвращается наибольший из них. Если в словаре нет такого слова, возвращается -1.
Пример:
Input: letters = ["c","f","j"], target = "a"
Output: "c"
👨💻 Алгоритм:
1⃣Сохраните слова и их индексы в словаре.
2⃣Создайте объединенные ключи, состоящие из префиксов и суффиксов для всех возможных комбинаций.
3⃣Реализуйте функцию поиска, которая ищет наибольший индекс слова по префиксу и суффиксу.
😎 Решение:
public class WordFilter {
private Map<String, Integer> prefixSuffixMap = new HashMap<>();
public WordFilter(String[] words) {
for (int index = 0; index < words.length; index++) {
String word = words[index];
int length = word.length();
for (int prefixLength = 1; prefixLength <= length; prefixLength++) {
for (int suffixLength = 1; suffixLength <= length; suffixLength++) {
String prefix = word.substring(0, prefixLength);
String suffix = word.substring(length - suffixLength);
String key = prefix + "#" + suffix;
prefixSuffixMap.put(key, index);
}
}
}
}
public int f(String pref, String suff) {
String key = pref + "#" + suff;
return prefixSuffixMap.getOrDefault(key, -1);
}
}
Ставь 👍 и забирай 📚 Базу знаний | 533 |
| 18 | Кольцо с бриллиантами
MIUZ Diamonds – для момента, который запомнится навсегда
Узнать больше
#реклама
miuz.ru
О рекламодателе | 261 |
| 19 | Задача: 1431. Kids With the Greatest Number of Candies
Сложность: easy
Дано n детей с конфетами. Вам дан целочисленный массив candies, где каждый candies[i] представляет количество конфет у i-го ребенка, и целое число extraCandies, обозначающее количество дополнительных конфет, которые у вас есть.
Вернуть булев массив result длиной n, где result[i] равно true, если, дав i-му ребенку все дополнительные конфеты, он будет иметь наибольшее количество конфет среди всех детей, или false в противном случае.
Обратите внимание, что несколько детей могут иметь наибольшее количество конфет.
Пример:
Input: candies = [2,3,5,1,3], extraCandies = 3
Output: [true,true,true,false,true]
Explanation: If you give all extraCandies to:
- Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids.
- Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
- Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids.
- Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids.
- Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
👨💻 Алгоритм:
1⃣Найдите максимальное количество конфет в массиве candies, сохраняя его в переменной maxCandies.
2⃣Создайте булев список answer и пройдитесь по массиву candies, добавляя в answer значение true, если текущий ребенок с добавленными extraCandies имеет количество конфет больше или равное maxCandies, иначе добавляйте false.
3⃣Верните список answer.
😎 Решение:
class Solution {
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
int maxCandies = 0;
for (int candy : candies) {
maxCandies = Math.max(candy, maxCandies);
}
List<Boolean> result = new ArrayList<>();
for (int candy : candies) {
result.add(candy + extraCandies >= maxCandies);
}
return result;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 434 |
| 20 | Задача: 735. Asteroid Collision
Сложность: medium
Нам дан массив asteroids, состоящий из целых чисел, представляющих астероиды в ряд. Для каждого астероида абсолютное значение обозначает его размер, а знак - направление движения (положительное - вправо, отрицательное - влево). Каждый астероид движется с одинаковой скоростью. Определите состояние астероидов после всех столкновений. Если два астероида столкнутся, меньший из них взорвется. Если оба одинакового размера, то взорвутся оба. Два астероида, движущиеся в одном направлении, никогда не встретятся.
Пример:
Input: sentence1 = ["great","acting","skills"], sentence2 = ["fine","drama","talent"], similarPairs = [["great","fine"],["drama","acting"],["skills","talent"]]
Output: true
👨💻 Алгоритм:
1⃣Используйте стек для отслеживания движущихся вправо астероидов.
2⃣Пройдите по массиву астероидов: Если астероид движется вправо, добавьте его в стек. Если астероид движется влево, сравните его с последним астероидом в стеке (если он есть и движется вправо): Если движущийся вправо астероид больше, текущий взорвется. Если движущийся влево астероид больше, последний астероид в стеке взорвется, и продолжите сравнение. Если они одинакового размера, оба взорвутся.
3⃣Добавьте оставшиеся астероиды из стека и текущий астероид в результат.
😎 Решение:
import java.util.*;
public class Solution {
public int[] asteroidCollision(int[] asteroids) {
Stack<Integer> stack = new Stack<>();
for (int asteroid : asteroids) {
boolean alive = true;
while (alive && asteroid < 0 && !stack.isEmpty() && stack.peek() > 0) {
int last = stack.pop();
if (last == -asteroid) {
alive = false;
} else if (last > -asteroid) {
stack.push(last);
alive = false;
}
}
if (alive) {
stack.push(asteroid);
}
}
int[] result = new int[stack.size()];
for (int i = result.length - 1; i >= 0; i--) {
result[i] = stack.pop();
}
return result;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 433 |
