Java Algorithms
111 subscribers
625 photos
623 links
Добро пожаловать💡

Канал для всех, кто ищет качественные решения и объяснения задач на Java

Roadmap по каналу:
https://t.me/algoroadmap/2
Download Telegram
➡️ Стартуем тему скользящего окна

💡 Идея

Представим, что ты следишь за своими расходами и всегда хочешь знать, сколько денег ты потратил за последние 7 дней.

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

Таким образом, у тебя всегда актуальная сумма за последние 7 дней без необходимости считать ее всю постоянно.

#slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟢Easy
1652. Defuse the Bomb

Company: 🏢📱📱

📝Дан массив code и целое число k.

Необходимо заменить каждый элемент по следующим правилам:
если k > 0, замените элемент суммой следующих k чисел
если k < 0, замените элемент суммой предыдущих k чисел
если k == 0, замените элемент на 0

Массив code является круговым, поэтому следующим элементом code[n-1] является code[0], а предыдущим элементом code[0] является code[n-1].

Верните полученный массив

💡: при выходе указателя за пределы, берите для него остаток от деления на длину массива

#leetcode1652 | #easy #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟢Easy
2379. Minimum Recolors to Get K Consecutive Black Blocks

Company: 🔍📱💻

📝Дана строка, которая содержит символы 'W' и 'B', представляющие белый и черный цвета соответственно. Также дано целое число k— желаемое количество последовательных черных блоков.

За одну операцию вы можете перекрасить белый блок в черный.

Верните минимальное количество операций, необходимое для того, чтобы было хотя бы одно вхождение последовательных k черных блоков

💡: найдите минимальное количество белых блоков в окне

#leetcode2379 | #easy #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡Medium
2516. Take K of Each Character From Left and Right

Company: 🔍📱🏢

📝Дана строка s, состоящая из символов 'a', 'b' и 'c', и целое число k. Каждую минуту вы можете взять либо самый левый символ s, либо самый правый символ s.

Верните минимальное количество минут, необходимое для того, чтобы взять не меньше k каждого символа или -1, если это невозможно

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

#leetcode2516 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡Medium
2461. Maximum Sum of Distinct Subarrays With Length K

Company: 📱📱🏢

📝Дан массив целых чисел nums и целое число k.

Найдите максимальную сумму подмассива длиной k, в котором все элементы различны

💡: сохраняйте в HashMap позиции элементов для исключения дубликатов в окне

#leetcode2461 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡Medium
2134. Minimum Swaps to Group All 1's Together II

Company: 📱🔍🅰️

📝Для заданного двоичного циклического массива nums верните минимальное количество перестановок, необходимых для группировки всех единиц, присутствующих в массиве, в любом месте

💡: найдите минимальное кол-во нулей в окне размером общего кол-ва единиц

#leetcode2134 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡Medium
1234. Replace the Substring for Balanced String

Company: 📱

📝Дана строка s, содержащая только четыре вида символов: 'Q', 'W', 'E', и 'R'.
Строка называется сбалансированной, если каждый из ее символов появляется n / 4 раз, где n — длина строки, всегда кратная 4.

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

💡: найдите минимальное окно для замены, проверяя оставшуюся часть строки на сбалансированность, используя массив частот

#leetcode1234 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡Medium
904. Fruit Into Baskets

Company: 🏢📱🅰️

📝Дан массив fruits, где fruits[i] — тип фрукта. У вас есть 2 корзины, в каждой может находится только 1 тип фруктов (неограниченного количества).

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

💡: поддерживайте окно с двумя уникальными элементами

#leetcode904 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔴Hard
2009. Minimum Number of Operations to Make Array Continuous

Company: 🚖🔍🅰️

📝Вам дан массив целых чисел nums, за одну операцию вы можете заменить любой элемент в нем любым целым числом.

Массив считается непрерывным, если выполняются оба следующих условия:
все элементы уникальны
разница между максимальным и минимальным элементами равна длине массива минус 1

Верните минимальное количество операций, необходимое для создания непрерывного массива

💡: найдите максимальное окно, в котором выполняется условие, предварительно отсортировав массив из уникальных элементов

#leetcode2009 | #hard #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔴Hard
30. Substring with Concatenation of All Words

Company: 🔍🏢🅰️

📝Вам дана строка s и массив строк words, которые имеют одинаковую длину.

Сцепленная строка — это строка, которая содержит в точности все строки любой перестановки words.

Верните список начальных индексов всех сцепленных подстрок в s

💡: поддерживайте окно длиной всех слов из words, для их подсчета используя HashMap

#leetcode30 | #hard #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2