Time: O(n)
Space: O(n)
▫ из текущей суммы вычитаем элемент на позиции старта окна (start % n) и добавляем элемент следующий после конца ((end + 1) % n), то есть считаем сумму для следующего окна, меняя только границы, при этом все содержимое между остается неизменным, поэтому мы получаем ее правильно▫ затем увеличиваем указатели start и end, фактически передвигая окно на следующую позицию
Please open Telegram to view this post
VIEW IN TELEGRAM
2379. Minimum Recolors to Get K Consecutive Black Blocks
Company:
За одну операцию вы можете перекрасить белый блок в черный.
Верните минимальное количество операций, необходимое для того, чтобы было хотя бы одно вхождение последовательных k черных блоков
#leetcode2379 | #easy #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
Please open Telegram to view this post
VIEW IN TELEGRAM
2516. Take K of Each Character From Left and Right
Company:
Верните минимальное количество минут, необходимое для того, чтобы взять не меньше k каждого символа или -1, если это невозможно
#leetcode2516 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
🟦 для решения будем искать самое большое окно из символов такое, что в оставшейся части строки (слева и справа) будут символы, которые удовлетворяют условию по количеству, а затем вычтем его из длины строки
Please open Telegram to view this post
VIEW IN TELEGRAM
2461. Maximum Sum of Distinct Subarrays With Length K
Company:
Найдите максимальную сумму подмассива длиной k, в котором все элементы различны
#leetcode2461 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
Please open Telegram to view this post
VIEW IN TELEGRAM
2134. Minimum Swaps to Group All 1's Together II
Company:
#leetcode2134 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
🟦 поскольку сгруппировать единицы можно в любом месте, нужно найти такое окно размером общего количества единиц, в котором будет меньше всего позиций для перестановок, то есть нулей
Please open Telegram to view this post
VIEW IN TELEGRAM
1234. Replace the Substring for Balanced String
Company:
Строка называется сбалансированной, если каждый из ее символов появляется n / 4 раз, где n — длина строки, всегда кратная 4.
Верните минимальную длину подстроки, которую можно заменить любой другой строкой той же длины, чтобы сделать всю строку s сбалансированной
#leetcode1234 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
private boolean isBalanced(int[] freq, int target) {
for (int num : freq) {
if (num > target) {
return false;
}
}
return true;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
904. Fruit Into Baskets
Company:
Начиная с любой позиции, двигайтесь вправо, собирая фрукты, пока они помещаются в ваши корзины. Верните максимальное количество фруктов, которое можно собрать
#leetcode904 | #medium #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(k)
пока это условие верно, передвигаем левый указатель, уменьшая частоту элементов под ним, и удаляем элемент из HashMap, если его частота стала равна 0
Please open Telegram to view this post
VIEW IN TELEGRAM
2009. Minimum Number of Operations to Make Array Continuous
Company:
Массив считается непрерывным, если выполняются оба следующих условия:
Верните минимальное количество операций, необходимое для создания непрерывного массива
#leetcode2009 | #hard #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(nlogn)
Space: O(n)
🟦 для решения найдем максимальное окно (подмассив), в котором все элементы уникальны и максимальный элемент не превышает минимальный плюс длина исходного массива.
При этом нам не нужно думать, как заменить оставшиеся элементы, так как необходимо вывести только количество операций. Также нам не важен порядок элементов, а только минимальный и максимальный, поэтому их можно отсортировать для удобного поиска
Please open Telegram to view this post
VIEW IN TELEGRAM
30. Substring with Concatenation of All Words
Company:
Сцепленная строка — это строка, которая содержит в точности все строки любой перестановки words.
Верните список начальных индексов всех сцепленных подстрок в s
#leetcode30 | #hard #slidingwindow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Time: O(k + n*m)
Space: O(k + m)
🟦 в начале инициализируем все необходимые глобальные переменные для удобного доступа: длина строки, длина одного слова, количество всех слов и размер окна, как умножение кол-ва всех слов на длину одного. Также формируем HashMap частоты слов из words🟦 после используем функцию slidingWindow для всех стартовых позиций от 0 до длины одного слова, так как дальше все позиции будут повторяться и не нужно их снова рассматривать
🟦 внутри этой функции мы идём по строке с шагом wordLen, каждый раз формируя новые слова, ведя их учёт в HashMap (wordsFound) и считая их количество (wordsCount) или обозначая, что оно лишнее (excessWord)🟦 рассматриваем две ситуации:
1. Если текущее слово не из wordsMap: сбрасываем все счётчики и начинаем окно заново
2. Иначе:➖ если достигнут допустимый размер окна или есть лишнее слово, сужаем окно с левой стороны, убирая слова из wordsFound и корректируя переменные➖ добавляем текущее слово в wordsFound➖ если оно встречается чаще, чем в wordsMap, выставляем флаг excessWord = true (лишнее слово)➖ если все нужные слова найдены и нет лишнего — добавляем левую границу окна в результат
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Стек помогает управлять последовательностью действий, когда нужно работать с последними добавленными элементами.
Например, ты пишешь текст в редакторе и хочешь отменить последнее действие.
Каждый раз, когда ты что-то пишешь или удаляешь, это добавляется в стек и, если ты нажимаешь "Отменить", редактор берёт из стека последнюю операцию и отменяет её.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
1047. Remove All Adjacent Duplicates In String
Company:
Верните окончательную строку после всех удалений
#leetcode1047 | #easy #stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
Please open Telegram to view this post
VIEW IN TELEGRAM