Java | LeetCode
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
نمایش بیشتر6 408
مشترکین
-224 ساعت
-177 روز
-5330 روز
در حال بارگذاری دادهها
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
اکتبر '26اکتبر '26
اکتبر '26
+29
در 0 کانالها
سپتامبر '26
+29
در 0 کانالها
Get PRO
اوت '26
+27
در 0 کانالها
Get PRO
ژوئیه '26
+33
در 0 کانالها
Get PRO
ژوئن '26
+42
در 1 کانالها
Get PRO
مه '26
+33
در 0 کانالها
Get PRO
آوریل '26
+36
در 0 کانالها
Get PRO
مارس '26
+44
در 0 کانالها
Get PRO
فوریه '26
+49
در 0 کانالها
Get PRO
ژانویه '26
+54
در 1 کانالها
Get PRO
دسامبر '25
+47
در 0 کانالها
Get PRO
نوامبر '25
+98
در 0 کانالها
Get PRO
اکتبر '25
+98
در 0 کانالها
Get PRO
سپتامبر '25
+101
در 1 کانالها
Get PRO
اوت '25
+164
در 2 کانالها
Get PRO
ژوئیه '25
+176
در 3 کانالها
Get PRO
ژوئن '25
+139
در 0 کانالها
Get PRO
مه '25
+190
در 2 کانالها
Get PRO
آوریل '25
+219
در 0 کانالها
Get PRO
مارس '25
+264
در 1 کانالها
Get PRO
فوریه '25
+358
در 6 کانالها
Get PRO
ژانویه '25
+362
در 53 کانالها
Get PRO
دسامبر '24
+221
در 0 کانالها
Get PRO
نوامبر '24
+249
در 0 کانالها
Get PRO
اکتبر '24
+478
در 12 کانالها
Get PRO
سپتامبر '24
+1 577
در 330 کانالها
Get PRO
اوت '24
+291
در 0 کانالها
Get PRO
ژوئیه '24
+1 602
در 219 کانالها
Get PRO
ژوئن '24
+2 260
در 232 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 26 اکتبر | +2 | |||
| 25 اکتبر | +1 | |||
| 24 اکتبر | 0 | |||
| 23 اکتبر | +3 | |||
| 22 اکتبر | 0 | |||
| 21 اکتبر | 0 | |||
| 20 اکتبر | +2 | |||
| 19 اکتبر | 0 | |||
| 18 اکتبر | +2 | |||
| 17 اکتبر | +1 | |||
| 16 اکتبر | +1 | |||
| 15 اکتبر | 0 | |||
| 14 اکتبر | +2 | |||
| 13 اکتبر | +1 | |||
| 12 اکتبر | 0 | |||
| 11 اکتبر | +2 | |||
| 10 اکتبر | +1 | |||
| 09 اکتبر | +3 | |||
| 08 اکتبر | +1 | |||
| 07 اکتبر | +1 | |||
| 06 اکتبر | +1 | |||
| 05 اکتبر | +1 | |||
| 04 اکتبر | +1 | |||
| 03 اکتبر | +2 | |||
| 02 اکتبر | 0 | |||
| 01 اکتبر | +1 |
پستهای کانال
Задача: №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;
}
}
Ставь 👍 и забирай 📚 Базу знаний| 2 | Braun — технологии для безупречного ухода
✨Оригинальные бритвы, триммеры и эпиляторы
✨ Точность, комфорт и стиль — вместе с Braun
Купить
#реклама
market.yandex.ru
О рекламодателе | 222 |
| 3 | ОСАГО по подписке — без оплаты за год сразу
Оформите ОСАГО один раз и забудьте о продлении. Кешбэк 100% за первый месяц
Заказать
Финансовые услуги оказывает: ПАО СК «Росгосстрах»,СПАО «Ингосстрах» и др..
#реклама
care.yandex.ru
О рекламодателе | 324 |
| 4 | Задача: 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;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 463 |
| 5 | Услуги дата-центра в Москве
Размещение и аренда серверного оборудования в дата-центре.
👍 4 современных дата-центра в Москве.
👍 Лицензированный оператор связи.
👍 Индивидуальные конфигурации выделенных серверов под задачи клиента.
👍 Круглосуточная техническая поддержка в Телеграм, без ботов.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе | 356 |
| 6 | 🔥 Скрытые вакансии с удаленной работой для Java разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.
🔹 Java Jobs | Вакансии
🔸 Все каналы с вакансиями | 412 |
| 7 | Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис
✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы.
Выберите формат, который подходит именно вашей команде:
✅ Базовый ИИ. Закладываем фундамент
✅ ИИ под роль. Навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды.
✅ ИИ-трансформация. Для компаний, которые хотят внедрять нейросети системно.
✅ ИИ-агенты. Для команд, которые хотят собирать собственных ИИ-агентов: от основ генеративного ИИ до рабочего прототипа без программирования.
Библиотека ИИ-навыков для команды — бесплатно при покупке любой программы ИИ-тренингов до конца сентября
Узнать больше
#реклама 16+
practicum.yandex.ru
О рекламодателе | 344 |
| 8 | 🔥 Почему ты получаешь отказ после «вроде норм собеса»?
Дело не всегда в знаниях. Можно знать правильный ответ, но не понимать, что именно хочет услышать интервьюер и как убедительно донести свою мысль.
Чтобы помочь с этим, ребята из ШОРТКАТ собрали 50 сложных вопросов с Java-собеседований и ответы сильного кандидата.
Они проанализировали более 100 мок-интервью и собрали в одном файле реальные вопросы и примеры ответов, на которые стоит ориентироваться при подготовке 🔥
🎁 Забирай файл бесплатно в боте 👉 @shortcut_sh_bot
А заодно сможешь зарегистрироваться на бесплатное тестовое собеседование с Java-разработчиком!
На эфире ты сможешь:
→ услышать, какие вопросы задают на собеседованиях в топовые компании;
→ посмотреть на интервью вживую;
→ лично задать вопросы ментору из бигтеха.
Забирай материалы и используй возможность подготовиться к следующему собесу 👇
@shortcut_sh_bot
Реклама.
О рекламодателе. | 323 |
| 9 | Открытый урок: бизнес-логика в микросервисах
Разработка в микросервисах — это не только разбиение на сервисы, но и грамотное распределение логики.
22 октября в 19:00 мск — открытый урок для разработчиков и архитекторов. Узнаете, где должна жить бизнес-логика. Запишитесь!
Зарегистрироваться
#реклама 16+
otus.ru
О рекламодателе | 320 |
| 10 | Получите удаленную подработку, где платят 5.000 ₽ в день
Нужно заполнять карточки товаров на ВБ, писать описания товаров и отвечать на отзывы.
Все это вы делаете из дома. Бесплатная регистрация только сегодня!
Опыт, знания и город — не важны! От вас требуется только телефон.
Занятость 3-6 часов в день.
График свободный. Заработок зависит от вас. Над вами нет никаких начальников. А самое важное, у вас не будет нужды просыпаться в 6 утра на работу.
Для старта в профессии нужно пройти бесплатное 3х-дневное обучение:
✅ Прямые эфиры, где вы поймете суть профессии
✅ Домашки с проверкой и оплатой бонусами
✅ Платим 10 тыс за каждую выполненную домашку
Все кто пройдет курс, получат сертификат от школы с образовательной лицензией.
⚡ Начинаем в понедельник!
Жмите снизу "Зарегистрироваться":
Зарегистрироваться
#реклама 16+
course.wildcard.ru
О рекламодателе | 297 |
| 11 | Задача: 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);
}
}
Ставь 👍 и забирай 📚 Базу знаний | 482 |
| 12 | Кольцо с бриллиантами
MIUZ Diamonds – для момента, который запомнится навсегда
Узнать больше
#реклама
miuz.ru
О рекламодателе | 261 |
| 13 | Задача: 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;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 401 |
| 14 | Задача: 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;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 379 |
| 15 | Кольцо с бриллиантами
MIUZ Diamonds – для момента, который запомнится навсегда
Узнать больше
#реклама
miuz.ru
О рекламодателе | 332 |
| 16 | Задача: 229. Majority Element II
Сложность: medium
Дан массив целых чисел размера n, найдите все элементы, которые встречаются более ⌊ n/3 ⌋ раз.
Пример:
Input: nums = [3,2,3]
Output: [3]
👨💻 Алгоритм:
1⃣Поиск кандидатов: Пройдите через массив, используя алгоритм Бойера-Мура для поиска двух потенциальных кандидатов, которые могут встречаться более ⌊ n/3 ⌋ раз. Поддерживайте два счётчика и двух кандидатов. Если текущий элемент равен одному из кандидатов, увеличьте соответствующий счётчик. Если счётчик равен нулю, установите текущий элемент как кандидата и установите счётчик в 1. Если текущий элемент не совпадает ни с одним из кандидатов, уменьшите оба счётчика.
2⃣Подсчёт голосов: После определения двух кандидатов, пройдите через массив снова, чтобы посчитать фактическое количество появлений каждого кандидата.
3⃣Проверка порога: Проверьте, превышает ли количество появлений каждого кандидата порог ⌊ n/3 ⌋. Если да, добавьте кандидата в результат.
😎 Решение:
class Solution {
public List<Integer> majorityElement(int[] nums) {
int count1 = 0, count2 = 0;
Integer candidate1 = null, candidate2 = null;
for (int n : nums) {
if (candidate1 != null && candidate1 == n) {
count1++;
} else if (candidate2 != null && candidate2 == n) {
count2++;
} else if (count1 == 0) {
candidate1 = n;
count1 = 1;
} else if (count2 == 0) {
candidate2 = n;
count2 = 1;
} else {
count1--;
count2--;
}
}
count1 = 0;
count2 = 0;
for (int n : nums) {
if (candidate1 != null && candidate1 == n) count1++;
if (candidate2 != null && candidate2 == n) count2++;
}
List<Integer> result = new ArrayList<>();
int n = nums.length;
if (count1 > n / 3) result.add(candidate1);
if (count2 > n / 3) result.add(candidate2);
return result;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 437 |
| 17 | Аренда и размещение серверов в дата-центрах Москвы
ITSOFT оказывает услуги коммерческого дата-центра в Москве.
👌Аренда физических выделенных серверов (Dedicated Servers) в готовых конфигурациях и в рамках индивидуальных сборок.
👌Colocation и аренда серверных стоек.
👌Предоставление инфраструктурных ИТ-решений для физических лиц и корпоративных клиентов.
👌Предоставление высокоскоростных каналов передачи данных.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе | 353 |
| 18 | Задача: 1332. Remove Palindromic Subsequences
Сложность: easy
Вам дана строка s, состоящая только из букв 'a' и 'b'. За один шаг вы можете удалить одну палиндромную подпоследовательность из s.
Верните минимальное количество шагов, чтобы сделать данную строку пустой.
Строка является подпоследовательностью данной строки, если она создается путем удаления некоторых символов из данной строки без изменения их порядка. Обратите внимание, что подпоследовательность не обязательно должна быть непрерывной.
Строка называется палиндромом, если она читается одинаково как вперед, так и назад.
Пример:
Input: s = "ababa"
Output: 1
Explanation: s is already a palindrome, so its entirety can be removed in a single step.
👨💻 Алгоритм:
1⃣Если строка s уже является палиндромом, верните 1, так как можно удалить всю строку за один шаг.
2⃣Если строка s не является палиндромом, верните 2. В этом случае можно удалить все символы 'a' за один шаг, а затем все символы 'b' за второй шаг (или наоборот).
3⃣Таким образом, минимум шагов для опустошения строки всегда будет либо 1, либо 2, в зависимости от того, является ли строка палиндромом.
😎 Решение:
class Solution {
public int removePalindromeSub(String s) {
if (s.isEmpty()) {
return 0;
}
if (new StringBuilder(s).reverse().toString().equals(s)) {
return 1;
}
return 2;
}
}
Ставь 👍 и забирай 📚 Базу знаний | 466 |
| 19 | Вебинар: открытое собеседование по System Design
Бесплатный вебинар, на котором ты:
Увидишь настоящий System Design-собес глазами человека, который сам проводил собеседования в EPAM и Wildberries.
Поймёшь, с чего начинать ответ и как не потеряться, когда задача кажется огромной.
Узнаешь, на чём чаще всего валятся кандидаты — и как этого избежать.
Поймёшь, чем ответ Middle отличается от ответа Senior и чего ждут на каждом уровне.
Зарегистрироваться
#реклама 16+
web.shortcut.education
О рекламодателе | 341 |
| 20 | Задача: 1120. Maximum Average Subtree
Сложность: medium
Дан корень бинарного дерева. Верните максимальное среднее значение поддерева этого дерева. Ответы, отличающиеся от фактического ответа не более чем на 10^-5, будут приняты.
Поддерево дерева — это любой узел этого дерева плюс все его потомки.
Среднее значение дерева — это сумма его значений, деленная на количество узлов.
Пример:
Input: root = [5,6,1]
Output: 6.00000
Explanation:
For the node with value = 5 we have an average of (5 + 6 + 1) / 3 = 4.
For the node with value = 6 we have an average of 6 / 1 = 6.
For the node with value = 1 we have an average of 1 / 1 = 1.
So the answer is 6 which is the maximum.
👨💻 Алгоритм:
1⃣Инициализация и определение State:
Определите класс State для хранения количества узлов в поддереве, суммы значений узлов в поддереве и максимального среднего значения поддерева.
2⃣Постобход (postorder traversal):
Реализуйте функцию maxAverage, которая выполняет постобход дерева, вычисляя nodeCount, valueSum и maxAverage для каждого узла, начиная с дочерних узлов и продвигаясь к родительским узлам.
3⃣Вычисление максимального среднего значения:
Используйте значения, полученные от дочерних узлов, для вычисления среднего значения для текущего узла и обновите maxAverage, если новое среднее значение больше текущего максимума.
😎 Решение:
class Solution {
class State {
int nodeCount;
int valueSum;
double maxAverage;
State(int nodes, int sum, double maxAverage) {
this.nodeCount = nodes;
this.valueSum = sum;
this.maxAverage = maxAverage;
}
}
public double maximumAverageSubtree(TreeNode root) {
return maxAverage(root).maxAverage;
}
State maxAverage(TreeNode root) {
if (root == null) {
return new State(0, 0, 0);
}
State left = maxAverage(root.left);
State right = maxAverage(root.right);
int nodeCount = left.nodeCount + right.nodeCount + 1;
int sum = left.valueSum + right.valueSum + root.val;
double maxAverage = Math.max(
(1.0 * (sum)) / nodeCount,
Math.max(right.maxAverage, left.maxAverage)
);
return new State(nodeCount, sum, maxAverage);
}
}
Ставь 👍 и забирай 📚 Базу знаний | 406 |
