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

JavaScript | LeetCode
22 сент., 16:11
Задача: 477. Total Hamming Distance Сложность: mediumХэммингово расстояние между двумя целыми числами — это количество позиций, в которых соответствующие биты отличаются. Дан целочисленный массив nums, верните сумму Хэмминговых расстояний между всеми парами чисел в nums.Пример: Input: nums = [4,14,2] Output: 6 Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just showing the four bits relevant in this case). The answer will be: HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.👨💻 Алгоритм:1⃣Для каждой уникальной пары элементов из массива вычисляем битовое XOR, чтобы найти позиции, где биты различаются. Бит, равный 1 в результате, указывает на различие.2⃣Для каждой пары элементов используем XOR, чтобы получить битовую разницу, и подсчитываем количество битов, равных 1, чтобы определить Хэммингово
JavaScript | LeetCode
22 сент., 13:40

JavaScript | LeetCode
22 сент., 09:06
Задача: 514. Freedom Trail Сложность: hardВ видеоигре Fallout 4 в квесте "Дорога к свободе" игрокам нужно добраться до металлического диска, называемого "Кольцо Свободы", и использовать его для набора определённого ключевого слова, чтобы открыть дверь. Дана строка ring, представляющая код, выгравированный на внешнем кольце, и другая строка key, представляющая ключевое слово, которое нужно набрать. Верните минимальное количество шагов, чтобы набрать все символы ключевого слова. Изначально первый символ кольца выровнен в направлении "12 часов". Вы должны набирать все символы из строки key один за другим, поворачивая кольцо по часовой или против часовой стрелки, чтобы каждый символ строки key выровнять в направлении "12 часов", а затем нажимая на центральную кнопку. На этапе вращения кольца для набора символа key[i]: Вы можете вращать кольцо по часовой или против часовой стрелки на одно
JavaScript | LeetCode
22 сент., 07:00
🔴AI кодинг интервью с разработчиком из международного FinTech в четверг в 19:00ДА! Вайбкодинг реально начали проверять на интервью, поэтому мы нашли собеседующего, который проводит AI-секцию в международном финтехе, чтобы вы увидели что на ней спрашивают и как к ней подготовиться.Как это будет: 📂 Александр Дмитриев, разработчик из известного международного финтеха, ex-VK, ex-Ozon проведет вайбкодинг секцию разработчику-добровольцу; 📂 Александр будет задавать реальные вопросы с секций, которые проводил сам и комментировать ответы; 📂 В конце можно будет задать любой вопрос Александру.Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят сменить работу, повысить свой грейд, ЗП и прокачать скиллы.Перех


JavaScript | LeetCode
22 сент., 04:40

JavaScript | LeetCode
21 сент., 09:06
Задача: 169. Majority Element Сложность: easyДан массив nums размера n, верните элемент большинства. Элемент большинства — это элемент, который встречается более чем ⌊n / 2⌋ раз. Можно предположить, что элемент большинства всегда существует в массиве.Пример: Input: nums = [3,2,3] Output: 3👨💻 Алгоритм:1️⃣Использование HashMap для подсчета: Создайте HashMap для отслеживания количества каждого элемента в массиве.2️⃣Подсчет вхождений элементов: Пройдите по массиву nums, увеличивая счетчик в HashMap для каждого элемента.3️⃣Поиск элемента большинства: Определите элемент большинства, просмотрев HashMap и найдя ключ с максимальным значением, которое должно быть больше ⌊n / 2⌋
JavaScript | LeetCode
20 сент., 09:06
Задача: 395. Longest Substring with At Least K Repeating Characters Сложность: mediumДана строка s и целое число k, верните длину самой длинной подстроки строки s, такая что частота каждого символа в этой подстроке больше или равна k. Если такой подстроки не существует, верните 0.Пример: Input: s = "aaabb", k = 3 Output: 3 Explanation: The longest substring is "aaa", as 'a' is repeated 3 times.👨💻 Алгоритм:1⃣Генерируйте подстроки из строки s, начиная с индекса start и заканчивая индексом end. Используйте массив countMap для хранения частоты каждого символа в подстроке.2⃣Метод isValid использует countMap для проверки, что каждый символ в подстроке встречается как минимум k раз. Если условие выполняется, текущая подстрока считается допустимой.3⃣Отслеживайте максимальную длину допустимой подстроки, обновляя её, когда найдена более длинная подстрока, удовлетворяющая условиям.
JavaScript | LeetCode
19 сент., 09:06
Задача: 765. Couples Holding Hands Сложность: hardЕсть n пар, сидящих на 2n местах, расположенных в ряд, и они хотят держаться за руки. Люди и места представлены массивом целых чисел row, где row[i] — это ID человека, сидящего на i-м месте. Пары пронумерованы по порядку: первая пара — (0, 1), вторая пара — (2, 3) и так далее, до последней пары — (2n - 2, 2n - 1). Верните минимальное количество перестановок, чтобы каждая пара сидела рядом. Перестановка состоит из выбора любых двух человек, которые встают и меняются местами.Пример: Input: row = [0,2,1,3] Output: 1 Explanation: We only need to swap the second (row[1]) and third (row[2]) person.👨💻 Алгоритм:1⃣Мы могли бы предположить без доказательства, что решение, при котором мы делаем людей на каждом диване счастливыми по порядку, является оптимальным. Это предположение сильнее, чем гипотеза о жадном подходе, но кажется
JavaScript | LeetCode
18 сент., 09:06
Задача: 326. Power of Three Сложность: easyДано целое число n. Верните true, если оно является степенью тройки, иначе верните false. Целое число n является степенью тройки, если существует целое число x такое, что n == 3^x.Пример: Input: n = 27 Output: true Explanation: 27 = 3^3👨💻 Алгоритм:1⃣Проверка начального значения Если n меньше или равно нулю, вернуть false, так как степени тройки всегда положительны.2⃣Цикл деления на 3 Пока n делится на 3 без остатка, делите n на 3. Повторяйте этот процесс до тех пор, пока n делится на 3.3⃣Проверка конечного значения
JavaScript | LeetCode
17 сент., 09:06
Задача: 1512. Number of Good Pairs Сложность: easyДан массив целых чисел nums, верните количество хороших пар.Пара (i, j) называется хорошей, если nums[i] == nums[j] и i < j.Пример: Input: nums = [1,2,3,1,1,3] Output: 4 Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.👨💻 Алгоритм:1⃣Инициализируйте переменную ans значением 0.2⃣Итерируйте i от 0 до nums.length: Итерируйте j от i + 1 до nums.length: Если nums[i] == nums[j], увеличьте ans на 1.
JavaScript | LeetCode
16 сент., 16:11
Задача: 295. Find Median from Data Stream Сложность: hardМедиана — это среднее значение в упорядоченном списке целых чисел. Если размер списка четный, то медианы нет, и медиана — это среднее арифметическое двух средних значений. Например, для arr = [2, 3, 4] медиана равна 3. Например, для arr = [2, 3] медиана равна (2 + 3) / 2 = 2.5. Реализуйте класс MedianFinder: MedianFinder() инициализирует объект MedianFinder. void addNum(int num) добавляет целое число num из потока данных в структуру данных. double findMedian() возвращает медиану всех элементов на данный момент. Ответы с точностью до 10^-5 от фактического ответа будут приниматься.Пример: Input ["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"] [[], [1], [2], [], [3], []] Output [null, null, null, 1.5, null, 2.0]Explanation MedianFinder medianFinder = new MedianFinder();
JavaScript | LeetCode
16 сент., 09:06
Задача: 210. Course Schedule II Сложность: mediumВсего есть numCourses курсов, которые вы должны пройти, пронумерованных от 0 до numCourses - 1. Вам дан массив prerequisites, где prerequisites[i] = [ai, bi] указывает на то, что вы должны сначала пройти курс bi, если хотите взять курс ai. Например, пара [0, 1] указывает на то, что для прохождения курса 0 сначала нужно пройти курс 1. Верните порядок курсов, которые вы должны пройти, чтобы завершить все курсы. Если существует несколько правильных ответов, верните любой из них. Если невозможно завершить все курсы, верните пустой массив.Пример: Input: numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]] Output: [0,2,1,3] Объяснение: Всего есть 4 курса, которые нужно пройти. Чтобы взять курс 3, вы должны завершить оба курса 1 и 2. Оба курса 1 и 2 должны быть взяты после того, как вы завершите курс 0. Таким образом, один из правильных
JavaScript | LeetCode
15 сент., 09:06
Задача: 1271. Hexspeak Сложность: easyДесятичное число можно преобразовать в его шестнадцатеричное представление, сначала преобразовав его в прописную шестнадцатеричную строку, а затем заменив все вхождения цифры '0' на букву 'O', а цифры '1' - на букву 'I'. Такое представление допустимо тогда и только тогда, когда оно состоит только из букв набора {'A', 'B', 'C', 'D', 'E', 'F', 'I', 'O'}. Получив строку num, представляющую десятичное целое число n, верните шестнадцатеричное представление n, если оно допустимо, иначе верните "ERROR".Пример: Input: num = "257" Output: "IOI"👨💻 Алгоритм:1⃣Преобразуйте десятичное число в шестнадцатеричную строку в верхнем регистре.2⃣Замените все вхождения цифры '0' на букву 'O', а цифры '1' на букву 'I'3⃣Проверьте, что преобразованная строка содержит только допустимые символы. Если это так, верните строку, иначе верните "ERROR".😎 Решение: f
JavaScript | LeetCode
14 сент., 16:11
Задача: 1102. Path With Maximum Minimum Value Сложность: mediumДана целочисленная матрица grid размером m x n. Верните максимальное значение пути, начинающегося в (0, 0) и заканчивающегося в (m - 1, n - 1), двигаясь в 4 кардинальных направлениях.Значение пути определяется минимальным числом на этом пути.Пример: Input: grid = [[5,4,5],[1,2,6],[7,4,6]] Output: 4 Explanation: The path with the maximum score is highlighted in yellow.👨💻 Алгоритм:1⃣Начните с оценки curScore = min(grid[0][0], grid[m-1][n-1]), где m и n - общее количество строк и столбцов входной матрицы.2⃣Выполните BFS на матрице и проверьте, существует ли путь, где все значения больше или равны curScore: Используйте очередь (deque) для хранения всех непосещенных ячеек со значением, большим или равным curScore. Извлекайте ячейку из начала очереди, проверяйте, есть ли у нее непосещенные соседние ячейки, и
JavaScript | LeetCode
11 сент., 16:11
Задача: 660. Remove 9 Сложность: hardНачните с целого числа 1, уберите любое число, которое содержит 9, такое как 9, 19, 29...Теперь у вас будет новая последовательность целых чисел [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, ...].Дано целое число n, верните n-е (начиная с 1) целое число в новой последовательности.Пример: Input: n = 9 Output: 10👨💻 Алгоритм:1⃣Инициализация: Начните с числа 1 и создайте переменную для отслеживания количества найденных чисел, не содержащих цифру 9.2⃣Итерация и проверка: Последовательно увеличивайте число и проверяйте, содержит ли оно цифру 9.
JavaScript | LeetCode
10 сент., 16:11
Задача: 126.Word Ladder II Сложность: hardПоследовательность преобразований от слова beginWord до слова endWord с использованием словаря wordList — это последовательность слов beginWord -> s1 -> s2 -> ... -> sk, для которой выполняются следующие условия: Каждая пара соседних слов отличается ровно одной буквой. Каждое si для 1 <= i <= k находится в wordList. Отметим, что beginWord не обязательно должно быть в wordList. sk == endWord. Для двух слов, beginWord и endWord, и словаря wordList, вернуть все самые короткие последовательности преобразований от beginWord до endWord или пустой список, если такая последовательность не существует. Каждая последовательность должна возвращаться в виде списка слов [beginWord, s1, s2, ..., sk].Пример: Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"] Output: [["hit","hot","dot","dog","cog"],["hit","hot","lot",
JavaScript | LeetCode
9 сент., 09:06
Задача: 1228. Missing Number In Arithmetic Progression Сложность: easyВ массиве arr значения находились в арифметической прогрессии: значения arr[i + 1] - arr[i] равны для всех 0 <= i < arr.length - 1.Из массива arr было удалено значение, которое не было первым или последним значением в массиве.Дан массив arr, вернуть удаленное значение.Пример: Input: arr = [5,7,11,13] Output: 9 Explanation: The previous array was [5,7,9,11,13].👨💻 Алгоритм:1⃣Рассчитать разность difference между элементами арифметической прогрессии.2⃣Начать с первого элемента массива и последовательно увеличивать ожидаемое значение на difference, проверяя каждый элемент массива.
JavaScript | LeetCode
8 сент., 16:11
Задача: 1199. Minimum Time to Build Blocks Сложность: hardВам дан список блоков, где blocks[i] = t означает, что на строительство i-го блока требуется t единиц времени. Блок может быть построен только одним рабочим. Рабочий может либо разделиться на двух рабочих (количество рабочих увеличивается на одного), либо построить блок и уйти домой. Оба решения требуют некоторого времени. Время, затраченное на разделение одного рабочего на двух, задано целым числом split. Обратите внимание, что если два рабочих разделяются одновременно, они разделяются параллельно, поэтому затраты времени будут равны split.Выведите минимальное время, необходимое для строительства всех блоков.Изначально есть только один рабочий.Пример: Input: blocks = [1,2,3], split = 1 Output: 4 Explanation: Split 1 worker into 2, then assign the first worker to the last block and split the second worker into 2. Then,
JavaScript | LeetCode
6 сент., 09:06
Задача: 567. Permutation in String Сложность: mediumДаны две строки s1 и s2. Верните true, если s2 содержит перестановку s1, или false в противном случае. Другими словами, верните true, если одна из перестановок s1 является подстрокой s2.Пример: Input: s1 = "ab", s2 = "eidbaooo" Output: true Explanation: s2 contains one permutation of s1 ("ba").👨💻 Алгоритм:1⃣Создать массив для подсчета символов в строке s1. Затем создать аналогичный массив для первых len(s1) символов строки s2.2⃣Использовать скользящее окно для перемещения по строке s2. Для каждой позиции окна обновлять массив подсчета символов и сравнивать его с массивом для строки s1.3⃣Если массивы совпадают на любом этапе, вернуть true. Если окно достигает конца строки s2 и совпадений не найдено, вернуть false.😎 Решение:
JavaScript | LeetCode
31 авг., 09:06
Задача: 1262. Greatest Sum Divisible by Three Сложность: mediumЕсли задан целочисленный массив nums, верните максимально возможную сумму элементов массива, которая делится на три.Пример: Input: nums = [3,6,5,1,8] Output: 18👨💻 Алгоритм:1⃣Найдите сумму всех элементов массива.2⃣Если сумма делится на 3, то она и есть ответ.3⃣Если сумма при делении на 3 дает остаток 1, удалите один элемент с остатком 1 или два элемента с остатком 2 (если их сумма равна 2). Если сумма при делении на 3 дает остаток 2, удалите один элемент с остатком 2 или два элемента с остатком 1 (если их сумма равна 2).😎 Решение: import java.util.Arrays;
