Последние посты

Python | LeetCode
22 сент., 16:11
Задача: 1376. Time Needed to Inform All Employees Сложность: mediumВ компании работает n сотрудников, каждому из которых присвоен уникальный идентификатор от 0 до n - 1. Руководитель компании имеет идентификатор headID.У каждого сотрудника есть один непосредственный начальник, указанный в массиве manager, где manager[i] — это непосредственный начальник i-го сотрудника, manager[headID] = -1. Также гарантируется, что отношения подчинения образуют древовидную структуру.Руководитель компании хочет сообщить всем сотрудникам компании срочную новость. Он сообщит своим непосредственным подчиненным, а они сообщат своим подчиненным и так далее, пока все сотрудники не узнают о срочной новости.i-й сотрудник нуждается в informTime[i] минутах, чтобы сообщить всем своим непосредственным подчиненным (т.е. через informTime[i] минут все его непосредственные подчиненные могут начать распространять
Python | LeetCode
22 сент., 13:45

Python | LeetCode
22 сент., 07:00
🔴Тестовый собес на Middle Python с разработчиком из Яндекса завтра вечером! [+ разбор 50 сложных вопросов в подарок ]23 сентября (уже завтра) в 19:00 по мск приходи онлайн, чтобы посмотреть на настоящее интервью на Middle Python-разработчика!Собеседование проведёт Хачатур Саркисян - ведущий разработчик из Яндекса.Как это будет:📂 Хачатур задаст разработчику вопросы и задачи, которые могут спросить на реальном собесе;📂 После каждого ответа респондента ты услышишь подробный комментарий от ментора и поймёшь, чего на самом деле ожидает собеседующий на интервью;📂 В конце сможешь задать любой вопрос Хачатуру и получить на него развёрнутый ответ.Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.И ты можешь посмотреть его бесплатно 🔥 Только завтра, в


Python | LeetCode
21 сент., 10:42

Python | LeetCode
21 сент., 09:06
Задача: 1027. Longest Arithmetic Subsequence Сложность: mediumЕсли задан массив nums целых чисел, верните длину самой длинной арифметической подпоследовательности в nums. Примечание: Подпоследовательность - это массив, который может быть получен из другого массива путем удаления некоторых или ни одного элемента без изменения порядка оставшихся элементов. Последовательность seq является арифметической, если seq[i + 1] - seq[i] имеют одинаковое значение (для 0 <= i < seq.length - 1).Пример: Input: nums = [3,6,9,12] Output: 4👨💻 Алгоритм:1⃣Инициализация переменных: Создайте массив словарей dp, где dp[i][d] будет хранить длину самой длинной арифметической подпоследовательности, заканчивающейся на элементе i с разностью d.2⃣Заполнение массива dp: Пройдитесь по каждому элементу массива nums. Для каждого элемента nums[j] (где j идет от 0 до i-1), вычислите разность d = nums[i] -
Python | LeetCode
14 сент., 16:11
Задача: 1055. Shortest Way to Form String Сложность: mediumПодпоследовательность строки - это новая строка, которая образуется из исходной строки путем удаления некоторых (можно ни одного) символов без нарушения взаимного расположения оставшихся символов. (например, "ace" является подпоследовательностью "abcde", а "aec" - нет). Если даны две строки source и target, верните минимальное количество подпоследовательностей source, чтобы их объединение равнялось target. Если задача невыполнима, верните -1.Пример: Input: source = "abc", target = "abcbc" Output: 2👨💻 Алгоритм:1⃣Используй два указателя для отслеживания текущих позиций в строках source и target.2⃣Перебирай символы строки source, пока не найдешь совпадающий символ в target. Если ты прошел всю строку source и не нашел все символы target, увеличь счетчик количества подпоследовательностей и начни снова с начала source.3⃣
Python | LeetCode
12 сент., 16:11
Задача: 325. Maximum Size Subarray Sum Equals k Сложность: mediumДан целочисленный массив nums и целое число k. Верните максимальную длину подмассива, сумма которого равна k. Если такого подмассива не существует, верните 0.Пример: Input: nums = [1,-1,5,-2,3], k = 3 Output: 4 Explanation: The subarray [1, -1, 5, -2] sums to 3 and is the longest.👨💻 Алгоритм:1⃣Инициализация переменных Инициализируйте prefixSum как 0 для отслеживания префиксной суммы nums. Инициализируйте longestSubarray как 0 для отслеживания самой длинной подмассы с суммой k. Инициализируйте хеш-карту indices для хранения префиксных сумм и их индексов.2⃣Итерация по массиву На каждом индексе i, добавляйте nums[i] к prefixSum. Проверьте следующие условия: Если prefixSum == k, обновите longestSubarray как i + 1. Если prefixSum - k существует в indices, обновите longestSubarray, если текущая длина подмассива
Python | LeetCode
11 сент., 16:11
Задача: 733. Flood Fill Сложность: easyИзображение представлено в виде целочисленной сетки m x n, где image[i][j] - значение пикселя изображения. Вам также даны три целых числа sr, sc и color. Вы должны выполнить заливку изображения, начиная с пикселя image[sr][sc]. Чтобы выполнить заливку, рассмотрите начальный пиксель, плюс все пиксели, соединенные по 4-м направлениям с начальным пикселем, того же цвета, что и начальный пиксель, плюс все пиксели, соединенные по 4-м направлениям с этими пикселями (также того же цвета), и так далее. Замените цвет всех вышеупомянутых пикселей на цвет. Верните измененное изображение после выполнения заливки.Пример: Input: image = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, color = 2 Output: [[2,2,2],[2,2,0],[2,0,1]]👨💻 Алгоритм:1⃣Получите цвет начального пикселя.2⃣Используйте обход в глубину (DFS) или обход в ширину (BFS) для замены цвета всех
Python | LeetCode
11 сент., 09:06
Задача: 384. Shuffle an Array Сложность: mediumДан целочисленный массив nums. Разработайте алгоритм для случайного перемешивания массива. Все перестановки массива должны быть равновероятны в результате перемешивания.Реализуйте класс Solution:Solution(int[] nums): Инициализирует объект целочисленным массивом nums. int[] reset(): Сбрасывает массив в его исходную конфигурацию и возвращает его. int[] shuffle(): Возвращает случайное перемешивание массива.Пример: Input: ransomNote = "a", magazine = "b" Output: false👨💻 Алгоритм:1⃣Алгоритм Фишера-Йейтса удивительно похож на решение грубой силы. На каждой итерации алгоритма мы генерируем случайное целое число между текущим индексом и последним индексом массива.2⃣Затем мы меняем местами элементы на текущем индексе и выбранном индексе. Это симулирует выбор (и удаление) элемента из "шляпы", так как следующий диапазон, из которого
Python | LeetCode
10 сент., 16:11
Задача: 835. Image Overlap Сложность: mediumВам даны два изображения, img1 и img2, представленные как бинарные квадратные матрицы размером n x n. Бинарная матрица содержит только 0 и 1 в качестве значений. Мы можем сдвигать одно изображение как угодно, перемещая все биты 1 влево, вправо, вверх и/или вниз на любое количество единиц. Затем мы помещаем его поверх другого изображения. После этого мы можем вычислить перекрытие, подсчитав количество позиций, на которых в обоих изображениях есть 1.Также обратите внимание, что при сдвиге не допускается никакое вращение. Любые биты 1, которые перемещаются за пределы границ матрицы, стираются.Верните максимальное возможное перекрытие.Пример: Input: img1 = [[1,1,0],[0,1,0],[0,1,0]], img2 = [[0,0,0],[0,1,1],[0,0,1]] Output: 3 Explanation: We translate img1 to right by 1 unit and down by 1 unit.👨💻 Алгоритм:1⃣Определите функцию
Python | LeetCode
10 сент., 09:06
Задача: 1441. Build an Array With Stack Operations Сложность: mediumВам дан целочисленный массив target и целое число n.У вас есть пустой стек с двумя следующими операциями:"Push": добавляет целое число на вершину стека. "Pop": удаляет целое число с вершины стека. Также у вас есть поток целых чисел в диапазоне [1, n].Используйте две операции стека, чтобы сделать числа в стеке (от нижнего к верхнему) равными target. Вы должны следовать следующим правилам:Если поток чисел не пуст, возьмите следующее целое число из потока и поместите его на вершину стека. Если стек не пуст, извлеките целое число с вершины стека. Если в любой момент элементы в стеке (от нижнего к верхнему) равны target, не берите новые числа из потока и не выполняйте больше операций со стеком. Верните операции стека, необходимые для построения target согласно указанным правилам. Если существует несколько
Python | LeetCode
9 сент., 09:06
Задача: 752. Open the Lock Сложность: mediumПеред вами замок с 4 круглыми колесами. Каждое колесо имеет 10 слотов: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. Колеса могут свободно вращаться и оборачиваться: например, мы можем повернуть "9" так, чтобы получился "0", или "0" так, чтобы получился "9". Каждый ход состоит из поворота одного колеса на один слот. Изначально замок начинается с '0000', строки, представляющей состояние 4 колес. Вам дан список тупиков, то есть если замок отобразит любой из этих кодов, колеса замка перестанут вращаться, и вы не сможете его открыть. Учитывая цель, представляющую значение колес, которое позволит отпереть замок, верните минимальное общее количество оборотов, необходимое для открытия замка, или -1, если это невозможно.Пример: Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202" Output: 6👨💻 Алгоритм:1⃣Используйте
Python | LeetCode
8 сент., 16:11
Задача: 1422. Maximum Score After Splitting a String Сложность: easyДана строка s из нулей и единиц. Верните максимальное количество очков после разбиения строки на две непустые подстроки (т.е. левую подстроку и правую подстроку).Количество очков после разбиения строки - это количество нулей в левой подстроке плюс количество единиц в правой подстроке.Пример: Input: s = "011101" Output: 5 Explanation: All possible ways of splitting s into two non-empty substrings are: left = "0" and right = "11101", score = 1 + 4 = 5 left = "01" and right = "1101", score = 1 + 3 = 4 left = "011" and right = "101", score = 1 + 2 = 3 left = "0111" and right = "01", score = 1 + 1 = 2 left = "01110" and right = "1", score = 2 + 1 = 3👨💻 Алгоритм:
Python | LeetCode
8 сент., 09:06
Задача: 993. Cousins in Binary Tree Сложность: easyДан корень бинарного дерева с уникальными значениями и значения двух различных узлов дерева x и y. Верните true, если узлы, соответствующие значениям x и y в дереве, являются кузенами, иначе верните false.Два узла бинарного дерева являются кузенами, если они находятся на одной глубине и имеют разных родителей.Обратите внимание, что в бинарном дереве корневой узел находится на глубине 0, а дети каждого узла глубины k находятся на глубине k + 1.Пример: Input: root = [1,2,3,4], x = 4, y = 3 Output: false👨💻 Алгоритм:1⃣Поиск глубины и родителя для каждого узла: Используйте поиск в глубину (DFS) для обхода дерева. Для каждого узла сохраняйте его глубину и родителя, если значение узла равно x или y.2⃣Проверка условий на кузенов:
Python | LeetCode
7 сент., 16:11
Задача: 32. Longest Valid Parentheses Сложность: hardДана строка, содержащая только символы '(' и ')'. Верните длину самой длинной подстроки с корректными (правильно сформированными) скобками.Пример: Input: s = "(()" Output: 2👨💻 Алгоритм:1️⃣В этом подходе мы рассматриваем каждую возможную непустую подстроку чётной длины из заданной строки и проверяем, является ли она корректной строкой скобок. Для проверки корректности мы используем метод стека.2️⃣Каждый раз, когда мы встречаем символ ‘(’, мы кладём его в стек. Для каждого встреченного символа ‘)’ мы извлекаем из стека символ ‘(’. Если символ ‘(’ недоступен в стеке для извлечения в любой момент или если в стеке остались элементы после обработки всей подстроки, подстрока скобок является некорректной.3️⃣Таким образом, мы повторяем процесс для каждой возможной подстроки и продолжаем сохранять длину самой длинной найденной
Python | LeetCode
7 сент., 09:06
Задача: 238. Product of Array Except Self Сложность: mediumДан массив целых чисел nums, верните массив answer такой, что answer[i] равен произведению всех элементов массива nums, кроме nums[i].Произведение любого префикса или суффикса массива nums гарантированно помещается в 32-битное целое число.Вы должны написать алгоритм, который работает за время O(n) и не использует операцию деления.Пример: Input: nums = [1,2,3,4] Output: [24,12,8,6]👨💻 Алгоритм:1⃣Инициализация массивов L и R: Инициализируйте два пустых массива L и R. Массив L будет содержать произведение всех чисел слева от i, а массив R будет содержать произведение всех чисел справа от i. Заполните массив L, установив L[0] равным 1, а для остальных элементов используйте формулу L[i] = L[i-1] nums[i-1]. Заполните массив R, установив R[length-1] равным 1, а для остальных элементов используйте формулу R[i] = R[i+1]
Python | LeetCode
6 сент., 09:06
Задача: 953. Verifying an Alien Dictionary Сложность: hardВ инопланетном языке, как ни странно, тоже используются английские строчные буквы, но, возможно, в другом порядке. Порядок алфавита - это некоторая перестановка строчных букв. Учитывая последовательность слов, написанных на инопланетном языке, и порядок алфавита, верните true тогда и только тогда, когда данные слова отсортированы лексикографически на этом инопланетном языке.Пример: Input: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz" Output: true👨💻 Алгоритм:1⃣Создать словарь для хранения порядка каждой буквы в инопланетном языке. Пройти по каждому слову и сравнить его с последующим словом.2⃣Для каждого слова, сравнить буквы, используя созданный словарь порядка. Если обнаружена пара слов, нарушающая порядок, вернуть false.3⃣Если все слова отсортированы правильно, вернуть true.😎 Решение:
Python | LeetCode
5 сент., 16:11
Задача: 1424. Diagonal Traverse II Сложность: mediumДан двумерный целочисленный массив nums, верните все элементы nums в диагональном порядке.Пример: Input: nums = [[1,2,3,4,5],[6,7],[8],[9,10,11],[12,13,14,15,16]] Output: [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]👨💻 Алгоритм:1⃣Инициализируйте очередь с (0, 0) и список ответов ans.2⃣Пока очередь не пуста: Извлеките (row, col) из очереди. Добавьте nums[row][col] в ans. Если col == 0 и row + 1 в пределах массива, добавьте (row + 1, col) в очередь. Если col + 1 в пределах текущей строки, добавьте (row, col + 1) в очередь.3⃣Верните ans.
Python | LeetCode
5 сент., 09:06
Задача: 201. Bitwise AND of Numbers Range Сложность: mediumДаны два целых числа left и right, которые представляют диапазон [left, right], верните побитовое И всех чисел в этом диапазоне включительно.Пример: Input: left = 5, right = 7 Output: 4👨💻 Алгоритм:1️⃣Сдвигать left и right вправо, пока они не станут равными.2️⃣Подсчитать количество сдвигов.3️⃣Сдвинуть left влево на количество сдвигов и вернуть результат.😎 Решение: class Solution: def rangeBitwiseAnd(self, m: int, n: int) -> int:


Python | LeetCode
3 сент., 16:11
Задача: 1470. Shuffle the Array Сложность: easyДан массив nums, состоящий из 2n элементов в форме [x1, x2, ..., xn, y1, y2, ..., yn].Верните массив в форме [x1, y1, x2, y2, ..., xn, yn].Пример: Input: nums = [2,5,1,3,4,7], n = 3 Output: [2,3,5,4,1,7] Explanation: Since x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 then the answer is [2,3,5,4,1,7].👨💻 Алгоритм:1⃣Создайте массив result размером 2 n.2⃣Итеративно пройдите по массиву nums от 0 до n - 1: Сохраните элемент xi+1, то есть nums[i], в индекс 2 i массива result. Сохраните элемент yi+1, то есть nums[i + n], в индекс 2 i + 1 массива result.
