tgindex

JavaScript | LeetCode

описание

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

8 542
подписчиков
Охват к подписчикам
5,0%
ERR
Реакции к просмотрам
0,00%
0 на 28 постов
Пересылки к просмотрам
0,20%
22
Постов в день
0,9
всего 25

Где отзываются чаще

доля реакций к просмотрам
  • 06:46Как Фронтенд-разработчику получить оффер в бигтех в 2026 Узнаешь, какие вопросы задают на собеседованиях Поймёшь, какие темы по JavaScript и React нужно знать особенно хорошо Увидишь, как рассуждают сильные кандидаты при решении задач Получишь понимание того, чего ожидают интервьюеры от Middle и Senior специалистов Участие — бесплатно. Зарегистрироваться #реклама 16+ web.shortcut.education О рекламодателе0,00%
  • 18:11Задача: 305. Number of Islands II Сложность: hard Дан пустой двумерный бинарный массив grid размером m x n. Этот массив представляет собой карту, где 0 означает воду, а 1 — сушу. Изначально все ячейки массива — водные (т.е. все ячейки содержат 0). Вы можете выполнить операцию "добавить землю", которая превращает воду в указанной позиции в сушу. Вам дан массив positions, где positions[i] = [ri, ci] — позиция (ri, ci), в которой следует выполнить i-ю операцию. Верните массив целых чисел answer, где answer[i] — количество островов после превращения ячейки (ri, ci) в сушу. Остров окружен водой и образуется путем соединения соседних земель по горизонтали или вертикали. Вы можете считать, что все четыре края сетки окружены водой. Пример: Input: m = 1, n = 1, positions = [[0,0]] Output: [1] 👨‍💻 Алгоритм: 1⃣Инициализация: Создайте массивы x[] = { -1, 1, 0, 0 } и y[] = { 0, 0, -1, 1 }, которые будут использоваться для нахождения соседей ячейки. Создайте экземпляр UnionFind, например, dsu(m * n). Инициализируйте всех родителей значением -1. Используйте объединение по рангу, инициализируйте все ранги значением 0. Наконец, инициализируйте count = 0. Создайте список целых чисел answer, где answer[i] будет хранить количество островов, образованных после превращения ячейки positions[i] в сушу. 2⃣Обработка позиций: Итерация по массиву positions. Для каждой позиции в positions: Выполните линейное отображение, чтобы преобразовать двумерную позицию ячейки в landPosition = position[0] * n + position[1]. Используйте операцию addLand(landPosition), чтобы добавить landPosition как узел в граф. Эта функция также увеличит count. Итерация по каждому соседу позиции. Соседа можно определить с помощью neighborX = position[0] + x[i] и neighborY = position[1] + y[i], где neighborX — координата X, а neighborY — координата Y соседней ячейки. Выполните линейное отображение соседней ячейки с помощью neighborPosition = neighborX * n + neighborY. Теперь, если на neighborPosition есть суша, т.е. isLand(neighborPosition) возвращает true, выполните объединение neighborPosition и landPosition. В объединении уменьшите count на 1. 3⃣Определение количества островов: Выполните операцию numberOfIslands, которая возвращает количество островов, образованных после превращения позиции в сушу. Добавьте это значение в answer. Верните answer. 😎 Решение class UnionFind { constructor(size) { this.parent = Array(size).fill(-1); this.rank = Array(size).fill(0); this.count = 0 } addLand(x) { if (this.parent[x] < 0) { this.parent[x] = x; this.count++ } } isLand(x) { return this.parent[x] >= 0 } find(x) { if (this.parent[x] !== x) this.parent[x] = this.find(this.parent[x]); return this.parent[x] } unionSet(x, y) { let xset = this.find(x), yset = this.find(y) if (xset !== yset) { if (this.rank[xset] < this.rank[yset]) this.parent[xset] = yset else { this.parent[yset] = xset; if (this.rank[xset] === this.rank[yset]) this.rank[xset]++ }; this.count-- } } } var numIslands2 = function(m, n, positions) { let dsu = new UnionFind(m * n), dirs = [[-1, 0], [1, 0], [0, -1], [0, 1]], answer = [] for (let pos of positions) { let land = pos[0] * n + pos[1]; dsu.addLand(land) for (let [dx, dy] of dirs) { let nx = pos[0] + dx, ny = pos[1] + dy, neighbor = nx * n + ny if (nx >= 0 && nx < m && ny >= 0 && ny < n && dsu.isLand(neighbor)) dsu.unionSet(land, neighbor) } answer.push(dsu.count) } return answer } Ставь 👍 и забирай 📚 Базу знаний0,00%
  • 17 авг.В нашем канале много ценного для разработчиков по подготовке к собесам👇 Уже 2 года мы развиваем комьюнити, где 10000+ разработчиков, и вместе мы тренируем собеседования и выжимаем из рынка максимум! Полные разборы собеседований: Сбер, VK, OZON, M-Video, Evrone, еще раз OZON, IT One, Trading View, МТС, Лантан, ДОМ.РФ Стримы с гостями и записями: Как проходить собеседование на английском Как решать livecoding задачи Прокачали более 30 резюме вместе с Юрой Сборники вопросов по темам: Кибербезопасность на собеседовании Все вопросы по React на собеседовании Все вопросы по TypeScript на собеседовании Как решать задачи двумя указателями Вопросы с Vue собеседований Вопросы по сетям и методологиям с 200 собесов Вопросы по JS с 200 собесов Какие задачи спрашивают на livecoding чаще Полезные посты: Job-борды для поиска работы Запись нашего самого кринжового собеса Новый HTTP метод QUERY Статистика по рынку: Июль, Июнь, Май, Апрель, Март Текущие рекорды участников: Оффер 6800$ net с релокацией на Кипр Из Шанхая до 4500$ в американскую компанию Получили 427 000 на руки в Сбер и отказались Выбили 380 000 на руки в банк и приняли! Наши встречи в Питере, Москве, Шанхае Как я прохожу собесы на ютубе: Оффер 260к на Go в Empoycity Оффер 300к на Go в "Системная интеграция" Отжал 390 gross + 25% премии в Иннотех Оффер на лида 415 gross + 20% премии в ПСБ А еще каждый четверг у нас проходят полезные стримы с решениями задач и разборами резюме) Подписывайся 👇 https://t.me/frontend_punks Реклама, erid: 2W5zFGKJcXb ИП Галактионов Тихон Витальевич, ИНН 7716189758090,00%
  • 16 авг.Метрики Delivery Manager: что измерять, а что — нет Большое количество показателей не делает поставку более управляемой. Команда может регулярно заполнять отчёты, отслеживать скорость и обновлять дашборды, но всё равно с опозданием узнавать о проблемах со сроками, качеством и нагрузкой. Метрика полезна только тогда, когда помогает увидеть риск, принять решение или изменить процесс, а не просто создаёт ощущение контроля. На открытом уроке 19 августа в 20:00 в OTUS разберём, какие показатели отражают реальное состояние поставки и помогают Delivery Manager управлять сроками, качеством и предсказуемостью работы. Поговорим о том, как выбирать метрики для команды и проекта, не перегружая процессы лишней отчётностью. Узнать больше #реклама 16+ otus.ru О рекламодателе0,00%
  • 16 авг.Задача: 541. Reverse String II Сложность: easy Дана строка s и целое число k, переверните первые k символов для каждых 2k символов, начиная с начала строки. Если осталось меньше k символов, переверните все. Если осталось меньше 2k, но больше или равно k символов, переверните первые k символов и оставьте остальные как есть. Пример: Input: s = "abcdefg", k = 2 Output: "bacdfeg" 👨‍💻 Алгоритм: 1⃣Разворачиваем каждый блок из 2k символов непосредственно. Каждый блок начинается с кратного 2k: например, 0, 2k, 4k, 6k и так далее. 2⃣Будьте внимательны, если символов недостаточно, блок может не быть перевернут. 3⃣Для разворота блока символов с позиции i до j, меняем местами символы на позициях i++ и j--. 😎 Решение: class Solution { reverseStr(s, k) { let a = s.split(''); for (let start = 0; start < a.length; start += 2 * k) { let i = start, j = Math.min(start + k - 1, a.length - 1); while (i < j) { [a[i], a[j]] = [a[j], a[i]]; i++; j--; } } return a.join(''); } } Ставь 👍 и забирай 📚 Базу знаний0,00%
  • 16 авг.Научись делать инфографику для маркетплейсов. Курс 0 р. Онлайн-программа с наставником и чатом. Внимание! 80% практики. ✅По результату обучения у вас будет портфолио из нескольких работ. ✅Сертификат о прохождении курса. ✅Возможность пройти полное обучение и получить карьерное сопровождение! Учитесь дизайну у профессионалов в Yudaev Shool. Переходи по кнопки: "Подробнее" и начинай свое обучение. Доступ 0 руб. Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе0,00%
  • 14 авг.без подписи0,00%
  • 12 авг.Задача: 442. Find All Duplicates in an Array Сложность: medium Дан целочисленный массив nums длины n, где все целые числа nums находятся в диапазоне [1, n], и каждое число появляется один или два раза. Верните массив всех чисел, которые появляются дважды. Вы должны написать алгоритм, который работает за время O(n) и использует только постоянное дополнительное пространство. Пример: Input: nums = [4,3,2,7,8,2,3,1] Output: [2,3] 👨‍💻 Алгоритм: 1⃣Когда мы итерируемся по элементам входного массива, мы можем просто искать любое другое вхождение текущего элемента в оставшейся части массива. 2⃣Поскольку элемент может появляться только один или два раза, нам не нужно беспокоиться о получении дубликатов элементов, которые появляются дважды: Случай I: Если элемент встречается в массиве только один раз, при поиске его в остальной части массива ничего не найдется. Случай II: Если элемент встречается дважды, вы найдете второе вхождение элемента в оставшейся части массива. Когда вы наткнетесь на второе вхождение в более поздней итерации, это будет аналогично случаю I (поскольку больше вхождений этого элемента в оставшейся части массива не будет). 3⃣Таким образом, можно эффективно определить все элементы, которые встречаются дважды, и добавить их в результирующий массив, проходя по каждому элементу массива и проверяя наличие его второго вхождения в оставшейся части массива. 😎 Решение: var findDuplicates = function(nums) { let ans = []; for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { if (nums[j] === nums[i]) { ans.push(nums[i]); break; } } } return ans; }; Ставь 👍 и забирай 📚 Базу знаний0,00%
  • 11 авг.без подписи0,00%
  • 6 авг.Задача: 668. Kth Smallest Number in Multiplication Table Сложность: hard Почти каждый использовал таблицу умножения. Таблица умножения размером m x n - это целочисленная матрица mat, где mat[i][j] == i * j (индексация начинается с 1). Даны три целых числа m, n и k. Верните k-й наименьший элемент в таблице умножения размером m x n. Пример: Input: m = 3, n = 3, k = 5 Output: 3 Explanation: The 5th smallest number is 3. 👨‍💻 Алгоритм: 1⃣Установка границ поиска: Установите нижнюю границу left равной 1 и верхнюю границу right равной m * n. 2⃣Бинарный поиск: Используйте бинарный поиск, чтобы найти k-й наименьший элемент. Для каждого среднего значения mid, посчитайте количество элементов в таблице умножения, которые меньше или равны mid. 3⃣Проверка количества элементов: Если количество элементов меньше k, увеличьте нижнюю границу (left). Если количество элементов больше или равно k, уменьшите верхнюю границу (right). 😎 Решение: var findKthNumber = function(m, n, k) { let left = 1, right = m * n; while (left < right) { let mid = Math.floor((left + right) / 2); if (countLessEqual(m, n, mid) < k) { left = mid + 1; } else { right = mid; } } return left; }; function countLessEqual(m, n, x) { let count = 0; for (let i = 1; i <= m; i++) { count += Math.min(Math.floor(x / i), n); } return count; } Ставь 👍 и забирай 📚 Базу знаний0,00%
  • 6 авг.Задача: 334. Increasing Triplet Subsequence Сложность: medium Дан массив целых чисел nums. Верните true, если существуют такие три индекса (i, j, k), что i < j < k и nums[i] < nums[j] < nums[k]. Если таких индексов не существует, верните false. Пример: Input: nums = [2,1,5,0,4,6] Output: true Explanation: The triplet (3, 4, 5) is valid because nums[3] == 0 < nums[4] == 4 < nums[5] == 6. 👨‍💻 Алгоритм: 1⃣Инициализация переменных: Создайте две переменные first_num и second_num и установите их значение на максимальное целое значение (Integer.MAX_VALUE или аналогичный максимум для выбранного языка программирования). Эти переменные будут хранить минимальные значения, необходимые для проверки существования возрастающей тройки. 2⃣Итерация по массиву: Пройдите по каждому элементу массива nums. Для каждого элемента выполните следующие проверки: - если текущий элемент меньше или равен first_num, обновите first_num текущим элементом. - иначе, если текущий элемент меньше или равен second_num, обновите second_num текущим элементом. - иначе, если текущий элемент больше second_num, это означает, что найдена возрастающая тройка, поэтому верните true. 3⃣Возврат результата: Если после завершения итерации по массиву не была найдена возрастающая тройка, верните false. 😎 Решение: var increasingTriplet = function(nums) { let firstNum = Infinity; let secondNum = Infinity; for (let n of nums) { if (n <= firstNum) { firstNum = n; } else if (n <= secondNum) { secondNum = n; } else { return true; } } return false; }; Ставь 👍 и забирай 📚 Базу знаний0,00%
  • 5 авг.Задача: 1268. Search Suggestions System Сложность: medium Вам дан массив строк products и строка searchWord. Разработайте систему, которая предлагает не более трех названий продуктов после ввода каждого символа searchWord. Предлагаемые товары должны иметь общий префикс с searchWord. Если есть более трех продуктов с общим префиксом, возвращаются три лексикографически минимальных продукта. Возвращается список списков предложенных продуктов после ввода каждого символа searchWord. Пример: Input: products = ["havana"], searchWord = "havana" Output: [["havana"],["havana"],["havana"],["havana"],["havana"],["havana"]] 👨‍💻 Алгоритм: 1⃣Отсортируйте массив продуктов. 2⃣Итерируйтесь по каждому символу в searchWord, находите все продукты, которые соответствуют текущему префиксу. 3⃣Сохраняйте не более трех лексикографически минимальных продуктов для каждого префикса. 😎 Решение: var suggestedProducts = function(products, searchWord) { products.sort(); let result = []; let prefix = ""; for (let char of searchWord) { prefix += char; let suggestions = products.filter(product => product.startsWith(prefix)).slice(0, 3); result.push(suggestions); } return result; }; Ставь 👍 и забирай 📚 Базу знаний0,00%