en
Feedback
Python | LeetCode

Python | LeetCode

Open in Telegram
9 334
Subscribers
-724 hours
-427 days
-9230 days
Attracting Subscribers
June '26
June '26
+38
in 1 channels
May '26
+40
in 0 channels
Get PRO
April '26
+47
in 0 channels
Get PRO
March '26
+50
in 0 channels
Get PRO
February '26
+42
in 0 channels
Get PRO
January '26
+69
in 0 channels
Get PRO
December '25
+55
in 0 channels
Get PRO
November '25
+105
in 0 channels
Get PRO
October '25
+110
in 0 channels
Get PRO
September '25
+67
in 0 channels
Get PRO
August '25
+112
in 1 channels
Get PRO
July '25
+128
in 4 channels
Get PRO
June '25
+129
in 2 channels
Get PRO
May '25
+166
in 3 channels
Get PRO
April '25
+178
in 0 channels
Get PRO
March '25
+217
in 3 channels
Get PRO
February '25
+343
in 6 channels
Get PRO
January '25
+307
in 53 channels
Get PRO
December '24
+150
in 0 channels
Get PRO
November '24
+174
in 0 channels
Get PRO
October '24
+725
in 15 channels
Get PRO
September '24
+3 750
in 329 channels
Get PRO
August '24
+260
in 0 channels
Get PRO
July '24
+2 514
in 219 channels
Get PRO
June '24
+3 546
in 232 channels
Date
Subscriber Growth
Mentions
Channels
25 June0
24 June+1
23 June0
22 June0
21 June+1
20 June+1
19 June0
18 June+1
17 June0
16 June+2
15 June0
14 June0
13 June+3
12 June0
11 June0
10 June+1
09 June+4
08 June+2
07 June+2
06 June+1
05 June+6
04 June0
03 June+3
02 June+8
01 June+2
Channel Posts
Задача: 934. Shortest Bridge Сложность: medium Вам дана двоичная матричная сетка n x n, где 1 обозначает сушу, а 0 - воду. Остров - это 4-направленно связанная группа из 1, не соединенная ни с одной другой 1. В сетке ровно два острова. Вы можете поменять 0 на 1, чтобы соединить два острова в один. Верните наименьшее количество 0, которое нужно перевернуть, чтобы соединить два острова. Пример:
Input: grid = [[0,1],[1,0]]
Output: 1
👨‍💻 Алгоритм: 1⃣Найти все клетки, принадлежащие первому острову, используя DFS/BFS, и добавить их в очередь для последующего расширения. 2⃣Использовать BFS для расширения из каждой клетки первого острова, чтобы найти кратчайший путь к клетке второго острова. 3⃣Вернуть длину кратчайшего пути. 😎 Решение:
from collections import deque

def shortestBridge(grid):
    n = len(grid)
    
    def neighbors(x, y):
        for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            if 0 <= x + dx < n and 0 <= y + dy < n:
                yield x + dx, y + dy
    
    def bfs(queue):
        visited = set(queue)
        steps = 0
        while queue:
            new_queue = []
            for x, y in queue:
                for nx, ny in neighbors(x, y):
                    if (nx, ny) not in visited:
                        if grid[nx][ny] == 1:
                            return steps
                        visited.add((nx, ny))
                        new_queue.append((nx, ny))
            queue = new_queue
            steps += 1
    
    def find_first_island():
        for i in range(n):
            for j in range(n):
                if grid[i][j] == 1:
                    queue = deque([(i, j)])
                    grid[i][j] = -1
                    island = [(i, j)]
                    while queue:
                        x, y = queue.popleft()
                        for nx, ny in neighbors(x, y):
                            if grid[nx][ny] == 1:
                                grid[nx][ny] = -1
                                queue.append((nx, ny))
                                island.append((nx, ny))
                    return island
    
    island = find_first_island()
    return bfs(island)
Ставь 👍 и забирай 📚 Базу знаний

2
Один из главных мифов вокруг ИИ-кодинга: достаточно найти правильный промпт — и модель начнет писать хороший код Но на практике два разработчика могут отправить одинаковый запрос: «создай API для пользователей» — и получить совершенно разный результат. Один получит аккуратный FastAPI-сервис с типами, тестами и обработкой ошибок. Другой — код, который придется переписывать после первого изменения. Причина часто не в модели. LLM (большие языковые модели) не знает, как устроен ваш проект: какие архитектурные решения приняты, какие стандарты действуют и что команда считает качественным результатом. Поэтому стоит выстраивать вокруг ИИ тот же инженерный слой, который уже есть в обычной разработке: правила проекта, чек-листы, автоматические проверки и понятные критерии качества. На бесплатном вебинаре karpovꓸcourses «ИИ-агенты и профессиональная разработка на Python» Алексей Жиряков покажет вживую, почему ИИ-код ломается в реальных проектах и как это исправлять. Алексей — исполнительный директор в Сбере, занимается развитием генеративного ИИ, а до этого более 15 лет работал в backend-разработке и руководил инженерными командами. Будет живое демо поверх готового репозитория: как настроить процесс, получить более чистый типизированный код и использовать продакшен-подход вроде связки «дешевая модель пишет — дорогая ревьюит», которая помогает снижать стоимость генерации. Присоединяйтесь по ссылке, а после регистрации вы получите гайд «Почему ваш ИИ пишет не то: LLM против ИИ-агента»: https://clc.to/erid_2W5zFGkYPEH Реклама. ООО «КАРПОВ КУРСЫ». ИНН 7811764627. erid: 2W5zFGkYPEH
259
3
Задача: 26. Remove Duplicates from Sorted Array Сложность: easy Учитывая целочисленный массив чисел, отсортированный в неубывающем порядке, удалите дубликаты на месте так, чтобы каждый уникальный элемент появлялся только один раз. Относительный порядок элементов должен оставаться неизменным. Затем верните количество уникальных элементов в числах. Считайте, что количество уникальных элементов чисел равно k. Чтобы вас приняли, вам нужно сделать следующее: - Измените массив nums так, чтобы первые k элементов nums содержали уникальные элементы в том порядке, в котором они присутствовали в nums изначально. Остальные элементы nums не важны, как и размер nums. - Вернуть k. Пример: Input: nums = [1,1,2] Output: 2, nums = [1,2,_] 👨‍💻 Алгоритм: 1️⃣Используем два указателя: один для уникальных элементов, другой для прохода по массиву. 2️⃣Перебираем массив, добавляя уникальные элементы на место. 3️⃣Возвращаем количество уникальных элементов. 😎 Решение: from typing import List class Solution: def removeDuplicates(self, nums: List[int]) -> int: i = 0 while i < len(nums) - 1: if nums[i] == nums[i + 1]: nums.pop(i + 1) else: i += 1 return len(nums) Ставь 👍 и забирай 📚 Базу знаний
315
4
Нужен мессенджер для работы? Битрикс24 — ваш мессенджер для работы и бизнеса. Личные и групповые чаты, видеозвонки и каналы в
Нужен мессенджер для работы? Битрикс24 — ваш мессенджер для работы и бизнеса. Личные и групповые чаты, видеозвонки и каналы в одном сервисе. Приглашайте коллег и внешние команды. Работает как привычный мессенджер. Есть бесплатный тариф. Начните работать уже сейчас. Битрикс24 — мессенджер для вашей компании. Попробовать #реклама 16+ bitrix24.ru О рекламодателе
415
5
Осталось 3 часа до конца акции: «Пожизненный PRO тариф — по цене 1 года» Поиск работы отнимает силы, время и веру в себя, но
Осталось 3 часа до конца акции: «Пожизненный PRO тариф — по цене 1 года» Поиск работы отнимает силы, время и веру в себя, но не у тех кто использует easyoffer PRO. Успей сделать самую выгодную инвестицию в развитие своей карьеры. Акция закончится уже сегодня 23 июня 23:59 по мск: 👉 https://easyoffer.ru/pro
193
6
Задача: 1137. N-th Tribonacci Number Сложность: easy Трибоначчи последовательность Tn определяется следующим образом: T0 = 0, T1 = 1, T2 = 1, и Tn+3 = Tn + Tn+1 + Tn+2 для n >= 0. Дано n, вернуть значение Tn. Пример: Input: n = 4 Output: 4 Explanation: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4 👨‍💻 Алгоритм: 1⃣Если n < 3, вернуть значение n-го терма, как указано в описании задачи. 2⃣Инициализировать a, b и c как базовые случаи. Установить a = 0, b = 1, c = 1. 3⃣Для следующих n - 2 шагов обновлять a, b, c следующим образом: a = b, b = c, c = a + b + c. Вернуть c. 😎 Решение: class Solution: def tribonacci(self, n: int) -> int: if n < 3: return 1 if n > 0 else 0 a, b, c = 0, 1, 1 for _ in range(n - 2): a, b, c = b, c, a + b + c return c Ставь 👍 и забирай 📚 Базу знаний
419
7
Задача: 543. Diameter of Binary Tree Сложность: easy Учитывая корень бинарного дерева, вернуть длину диаметра дерева. Диаметр бинарного дерева — это длина самого длинного пути между любыми двумя узлами в дереве. Этот путь может проходить или не проходить через корень. Длина пути между двумя узлами представлена числом ребер между ними. Пример: Input: root = [1,2] Output: 1 👨‍💻 Алгоритм: 1⃣Инициализируйте целочисленную переменную diameter для отслеживания самого длинного пути, найденного с помощью DFS. 2⃣Реализуйте рекурсивную функцию longestPath, которая принимает TreeNode в качестве входных данных и рекурсивно исследует дерево: Если узел равен None, вернуть 0. Рекурсивно исследовать левые и правые дочерние узлы, возвращая длины путей leftPath и rightPath. Если сумма leftPath и rightPath больше текущего diameter, обновить diameter. Вернуть большее из leftPath и rightPath плюс 1. 3⃣Вызвать longestPath с root. 😎 Решение: class Solution: def __init__(self): self.diameter = 0 def diameterOfBinaryTree(self, root): self.diameter = 0 self.longestPath(root) return self.diameter def longestPath(self, node): if not node: return 0 leftPath = self.longestPath(node.left) rightPath = self.longestPath(node.right) self.diameter = max(self.diameter, leftPath + rightPath) return max(leftPath, rightPath) + 1 Ставь 👍 и забирай 📚 Базу знаний
417
8
Последний день акции: «Пожизненный PRO тариф — по цене 1 года» 🚀 PRO включает: – Полный доступ ко всем грейдам и профессиям
Последний день акции: «Пожизненный PRO тариф — по цене 1 года» 🚀 PRO включает: – Полный доступ ко всем грейдам и профессиям – База live-coding задач и вопросов из технических собеседований с вероятностью их встречи – Примеры лучших ответов от Senior разработчиков – 1100+ записи реальных собеседований, в том числе в топовые компании (Сбер, Авито, Яндекс, WB, OZON, МТС и др.) – База 400+ тестовых заданий от компаний. – Автоотклики на вакансии в хедхантер – Аналитика ТОП-требований из вакансий для лучшего написания резюме и прохождения ATS систем рекрутеров – Генератор уникального резюме и CV под каждую вакансию – Тренажеры подготовки к собеседованию: «Реальное собеседование» и «Проработка вопросов» по методике интервальных повторений (как Anki) – (скоро) Агрегатор вакансий – (скоро) Сообщество Акция закончится уже сегодня 23 июня 23:59 по мск: 👉 https://easyoffer.ru/pro
367
9
Город Доброград: живи как в отпуске! В Доброграде отпуск является частью повседневной жизни. Что если ваш обычный день будет
Город Доброград: живи как в отпуске! В Доброграде отпуск является частью повседневной жизни. Что если ваш обычный день будет выглядеть так: 🏃‍♂️ Утро Завтрак на собственной террасе или пробежка по лесной тропе 🏠 День Работа с видом на лес, а в перерывах - прогулка у озера, велокруг или обед в ресторане у дома ❤️ Вечер Не пробка по дороге домой, а время с семьёй, партия в гольф, тренировка в вейк-парке или встреча заката у воды Вы не решаете вопросы детской логистики - их решила система образования Доброграда: дети добираются до школы сами или на трансфере, учат уроки и посещают кружки прямо в школе. Так уже живут более 3000 человек из 60+ регионов России. Готовые квартиры, таунхаусы и участки. Всего 2,5 ч. от Москвы Посмотрите, каким может быть ваш новый дом и новый образ жизни. Узнать больше #реклама dobrograd.ru О рекламодателе
439
10
Задача: 990. Satisfiability of Equality Equations Сложность: medium Дан массив строк equations, представляющий отношения между переменными, где каждая строка equations[i] имеет длину 4 и принимает одну из двух форм: "xi==yi" или "xi!=yi". Здесь xi и yi - это строчные буквы (не обязательно разные), представляющие имена переменных из одной буквы. Верните true, если возможно назначить целые числа именам переменных таким образом, чтобы удовлетворить всем заданным уравнениям, или false в противном случае. Пример: Input: equations = ["b==a","a==b"] Output: true Explanation: We could assign a = 1 and b = 1 to satisfy both equations. 👨‍💻 Алгоритм: 1⃣Создание графа для уравнений "==": Создайте структуру данных для объединения (Union-Find) для обработки уравнений равенства. Пройдите через массив equations и для каждого уравнения типа "xi==yi" объедините соответствующие переменные. 2⃣Проверка уравнений "!=": Пройдите через массив equations и для каждого уравнения типа "xi!=yi" проверьте, принадлежат ли переменные к одной и той же группе в структуре объединения. Если принадлежат, верните false. 3⃣Возврат результата: Если после проверки всех уравнений "xi!=yi" не было обнаружено противоречий, верните true. 😎 Решение: class Solution: def equationsPossible(self, equations: List[str]) -> bool: uf = UnionFind(26) for eq in equations: if eq[1] == '=': x = ord(eq[0]) - ord('a') y = ord(eq[3]) - ord('a') uf.union(x, y) for eq in equations: if eq[1] == '!': x = ord(eq[0]) - ord('a') y = ord(eq[3]) - ord('a') if uf.connected(x, y): return False return True class UnionFind: def __init__(self, size): self.parent = list(range(size)) def find(self, x): if self.parent[x] != x: self.parent[x] = self.find(self.parent[x]) return self.parent[x] def union(self, x, y): rootX = self.find(x) rootY = self.find(y) if rootX != rootY: self.parent[rootX] = rootY def connected(self, x, y): return self.find(x) == self.find(y) Ставь 👍 и забирай 📚 Базу знаний
407
11
Виртуальный сервер в аренду в Турции или России. Отказоустойчивый виртуальный облачный сервер на базе виртуализации VMWARE по
Виртуальный сервер в аренду в Турции или России. Отказоустойчивый виртуальный облачный сервер на базе виртуализации VMWARE по модели подписки. - Бесплатная миграция инфраструктуры в Турцию - Размещайте ресурсы в Турции или России и оплачивайте в рублях, турицких лирах или евро. - Храните резервные копии данных за рубежом для минимизации рисков - Продолжайте использовать импортное ПО, скачивайте обновления и патчи, общайтесь с техподдержкой - Доступность сервиса — от 99,982% SLA - Дата центры Tier III в России и Турции - Почасовой биллинг и постоплата Подключите услугу сегодня со скидкой 50% на инфраструктуру. Подать заявку #реклама 16+ cloud4y.ru О рекламодателе
430
12
Пожизненный PRO тариф — по цене 1 года. Покупаешь один раз — пользуешься всю жизнь: 👉 https://easyoffer.ru/pro 🚀 PRO-доступ
Пожизненный PRO тариф — по цене 1 года. Покупаешь один раз — пользуешься всю жизнь: 👉 https://easyoffer.ru/pro 🚀 PRO-доступ закроет 99% проблем на пути к офферу: 1. Полный доступ ко всем грейдам и профессиям. Не важно, Junior вы или Senior, Тестировщик, Разработчик, Проджект — вы получите материалы под ваш текущий уровень и цели, без ограничений. 2. База live-coding задач и вопросов с реальных собесов с уникальной системой вероятности их встречи. Вы будете готовиться не вслепую, а точечно по тем темам, которые спрашивают чаще всего. 3. Эталонные ответы от Senior-разработчиков. Никакой воды и догадок — только четкие, структурированные решения, за которые дают «зеленый свет» к офферу 4. 1100+ записей реальных собеседований (включая топы: Сбер, Авито, Яндекс, WB, OZON, МТС). Вы увидите всё изнутри: как спрашивают, как отвечают сильные кандидаты и на каких ошибках проваливаются 80% проходящих. 5. База 400+ тестовых заданий. Если вы еще студент, то практикуйтесь на решении задач, которые помогут попасть на собес 6. Автоотклики на Хедхантере — пока вы спите, ваше резюме летит к рекрутерам автоматически. Это экономия сотен часов ручного кликанья. 7. Аналитика ТОП-требований из вакансий. Мы парсим рынок и показываем, какие скиллы сейчас в цене. Это позволит вам точечно апгрейдить резюме и проходить суровые ATS-фильтры (которые отсеивают до 75% резюме еще до просмотра рекрутером). 8. Генератор уникального резюме и CV под каждую вакансию. Забудьте про «универсальное» резюме — нейросеть адаптирует ваш опыт под конкретную позицию за минуту, повышая шансы на приглашение в разы. 9. Тренажеры подготовки к собеседованию: «Реальное собеседование» — сценарий вопросов из реальных интервью «Проработка вопросов» — флеш карточки с вопросами/ответами по методике интервальных повторений (как Anki) 10. (Скоро) Агрегатор вакансий — все вакансии из HH, Telegram, LinkedIn и других площадок в одной ленте. 11. (Скоро) Закрытое комьюнити — нетворкинг и помощь в сложных вопросах от таких же целеустремленных айтишников. Завтра последний день акции: 👉 https://easyoffer.ru/pro
389
13
Задача: 973. K Closest Points to Origin Сложность: medium Дан массив точек, где points[i] = [xi, yi] представляет собой точку на плоскости X-Y, и целое число k. Верните k точек, ближайших к началу координат (0, 0). Расстояние между двумя точками на плоскости X-Y является евклидовым расстоянием (то есть √((x1 - x2)² + (y1 - y2)²)). Вы можете вернуть ответ в любом порядке. Гарантируется, что ответ будет уникальным (за исключением порядка). Пример: Input: points = [[1,3],[-2,2]], k = 1 Output: [[-2,2]] Explanation: The distance between (1, 3) and the origin is sqrt(10). The distance between (-2, 2) and the origin is sqrt(8). Since sqrt(8) < sqrt(10), (-2, 2) is closer to the origin. We only want the closest k = 1 points from the origin, so the answer is just [[-2,2]]. 👨‍💻 Алгоритм: 1⃣Отсортируйте массив с помощью функции компаратора. 2⃣Функция компаратора будет использовать уравнение квадратного евклидова расстояния для сравнения двух точек. 3⃣Верните первые k элементов массива. 😎 Решение: class Solution: def kClosest(self, points: list[list[int]], k: int) -> list[list[int]]: points.sort(key=self.squaredDistance) return points[:k] def squaredDistance(self, point: list[int]) -> int: return point[0] ** 2 + point[1] ** 2 Ставь 👍 и забирай 📚 Базу знаний
408
14
Чек-лист для банков и ТЭК: Запуск корпоративного ИИ Данные не покинут периметр, а первые ИИ-агенты заработают за 14 дней. В п
Чек-лист для банков и ТЭК: Запуск корпоративного ИИ Данные не покинут периметр, а первые ИИ-агенты заработают за 14 дней. В практическом руководстве разобрали, почему облака не подходят регулируемым отраслям, и сравнили 3 пути: самостоятельная сборка, ПАК или облако. Вы узнаете: как гарантировать суверенность и пройти проверки регуляторов, скрытые затраты облачных сервисов, точный расчёт TCO на 3 года и реальные кейсы банков и ТЭК. Внутри: матрица решений, чек-лист готовности и Excel-калькулятор. Скачайте руководство и запустите ИИ без CAPEX и санкционных рисков. Скачать #реклама 16+ t1-ai.ru О рекламодателе
458
15
Задача: 1382. Balance a Binary Search Tree Сложность: medium Дан корень бинарного дерева поиска. Верните сбалансированное бинарное дерево поиска с теми же значениями узлов. Если существует более одного ответа, верните любой из них. Бинарное дерево поиска считается сбалансированным, если глубина двух поддеревьев каждого узла никогда не отличается более чем на 1. Пример: Input: root = [1,null,2,null,3,null,4,null,null] Output: [2,1,3,null,null,null,4] Explanation: This is not the only correct answer, [3,1,4,null,2] is also correct. 👨‍💻 Алгоритм: 1⃣Инициализация. Создайте пустой список inorder для хранения значений узлов после обхода в порядке возрастания. 2⃣Выполнение обхода в порядке возрастания. Обойдите бинарное дерево поиска (BST) и заполните список inorder значениями узлов в отсортированном порядке. 3⃣Перестроение сбалансированного BST. Определите рекурсивную функцию createBalancedBST, которая принимает список inorder, начальный индекс и конечный индекс в качестве параметров. Если начальный индекс больше конечного, верните null (или эквивалент). Вычислите средний индекс как середину текущего диапазона. Создайте новый узел дерева со значением в среднем индексе. Рекурсивно создайте левое поддерево, используя левую половину текущего диапазона. Рекурсивно создайте правое поддерево, используя правую половину текущего диапазона. Верните корень вновь построенного сбалансированного BST. 😎 Решение: class Solution: def balanceBST(self, root: TreeNode) -> TreeNode: if not root: return None vineHead = TreeNode(0) vineHead.right = root current = vineHead while current.right: if current.right.left: self.rightRotate(current, current.right) else: current = current.right nodeCount = 0 current = vineHead.right while current: nodeCount += 1 current = current.right m = 2 ** (nodeCount + 1).bit_length() - 1 self.makeRotations(vineHead, nodeCount - m) while m > 1: m //= 2 self.makeRotations(vineHead, m) return vineHead.right def rightRotate(self, parent, node): tmp = node.left node.left = tmp.right tmp.right = node parent.right = tmp def leftRotate(self, parent, node): tmp = node.right node.right = tmp.left tmp.left = node parent.right = tmp def makeRotations(self, vineHead, count): current = vineHead for _ in range(count): tmp = current.right self.leftRotate(current, tmp) current = current.right Ставь 👍 и забирай 📚 Базу знаний
414
16
Кто и как смотрит контент на Connected TV? Времена меняются, а люди по-прежнему проводят вечера у телевизора — только теперь
Кто и как смотрит контент на Connected TV? Времена меняются, а люди по-прежнему проводят вечера у телевизора — только теперь сами выбирают, что смотреть: 📊 66% переключаются между онлайн-кинотеатрами и видеоплатформами 📊 24% предпочитают только онлайн-кинотеатры 📊 10% смотрят контент исключительно на видеоплатформах Аналитики Яндекс Рекламы изучили обезличенные данные пользователей 5,8 млн устройств CTV с YaOS. В среднем пользователи проводят за просмотром контента 4 часа 11 минут в сутки. Охватить эту аудиторию помогает реклама на Connected TV. Настроить показы видео и ТВ-билбордов с умной оптимизацией можно прямо в Директе. ⚡ Запустить продвижение на CTV Перейти на сайт #реклама 16+ yandex.ru О рекламодателе
383
17
Задача: 923. 3Sum With Multiplicity Сложность: medium Если задан целочисленный массив arr и целое число target, верните количество кортежей i, j, k, таких, что i < j < k и arr[i] + arr[j] + arr[k] == target. Поскольку ответ может быть очень большим, верните его по модулю 10^9 + 7. Пример: Input: arr = [1,1,2,2,3,3,4,4,5,5], target = 8 Output: 20 👨‍💻 Алгоритм: 1⃣Отсортировать массив arr. 2⃣Инициализировать счетчик для количества кортежей. Пройти по массиву тремя указателями i, j, и k: Для каждого i, установить j на i + 1, и k на конец массива. Использовать двухуказательный метод для нахождения пар (j, k), таких что arr[i] + arr[j] + arr[k] == target. 3⃣Вернуть результат по модулю 10^9 + 7. 😎 Решение: def threeSumMulti(arr, target): arr.sort() MOD = 10**9 + 7 count = 0 for i in range(len(arr)): j, k = i + 1, len(arr) - 1 while j < k: sum_ = arr[i] + arr[j] + arr[k] if sum_ == target: if arr[j] == arr[k]: count += (k - j + 1) * (k - j) // 2 break else: left, right = 1, 1 while j + 1 < k and arr[j] == arr[j + 1]: left += 1 j += 1 while k - 1 > j and arr[k] == arr[k - 1]: right += 1 k -= 1 count += left * right j += 1 k -= 1 elif sum_ < target: j += 1 else: k -= 1 return count % MOD Ставь 👍 и забирай 📚 Базу знаний
413
18
Задача: 1464. Maximum Product of Two Elements in an Array Сложность: easy Дан массив целых чисел nums, выберите два разных индекса i и j этого массива. Верните максимальное значение (nums[i]-1)*(nums[j]-1). Пример: Input: nums = [3,4,5,2] Output: 12 Explanation: If you choose the indices i=1 and j=2 (indexed from 0), you will get the maximum value, that is, (nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12. 👨‍💻 Алгоритм: 1⃣Инициализируйте biggest = 0 и secondBiggest = 0. 2⃣Итерируйте по каждому элементу массива nums: Если текущий элемент больше biggest, обновите secondBiggest = biggest и biggest = текущий элемент. Иначе обновите secondBiggest, если текущий элемент больше secondBiggest. 3⃣Верните (biggest - 1) * (secondBiggest - 1). 😎 Решение: class Solution: def maxProduct(self, nums: List[int]) -> int: biggest = 0 secondBiggest = 0 for num in nums: if num > biggest: secondBiggest = biggest biggest = num elif num > secondBiggest: secondBiggest = num return (biggest - 1) * (secondBiggest - 1) Ставь 👍 и забирай 📚 Базу знаний
467
19
Вы платите им за 8 часов, а они работают 3? Хватит оплачивать имитацию бурной деятельности! Узнайте, чем реально занят персон
Вы платите им за 8 часов, а они работают 3? Хватит оплачивать имитацию бурной деятельности! Узнайте, чем реально занят персонал за ПК. Строго в рамках закона. Попробовать #реклама 16+ stakhanovets.ru О рекламодателе
422
20
Привет, ребята! У нас для вас отличные новости — на easyoffer вышло сразу несколько крупных обновлений: 1. Автоотклики на HeadHunter Снова работают в полную силу — можно смело возвращаться к активному поиску. 2. Новый раздел «Резюмейкер» Теперь вы можете быстро создавать уникальные резюме, адаптированные под каждую вакансию, и сразу добавлять сопроводительное письмо. Это заметно повышает шансы получить приглашение на собеседование. 3. База вопросов стала чище Мы навели порядок и удалили около 30% дубликатов. Ориентироваться стало проще. –––––––––––––––––– 🔥 Акция в честь обновления Пожизненный тариф easyoffer PRO — по цене одного года. Успейте до 23 июня: 👉 https://easyoffer.ru/pro –––––––––––––––––– Что дальше? В ближайшие пару недель добавим ещё два раздела: 1. Сообщество с чатами по всем профессиональным направлениям. 2. Агрегатор вакансий, чтобы поиск работы стал ещё удобнее.
425