uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Python | LeetCode

Python | LeetCode

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
8 969
Obunachilar
-1024 soatlar
-327 kun
-10330 kun
Postlar arxiv
Задача: 594. Longest Harmonious Subsequence Сложность: easy Мы определяем гармоничный массив как массив, в котором разница между его максимальным и минимальным значением составляет ровно 1. Дан целочисленный массив nums, верните длину его самой длинной гармоничной подпоследовательности среди всех возможных подпоследовательностей. Подпоследовательность массива - это последовательность, которую можно получить из массива, удалив некоторые или никакие элементы, не изменяя порядок оставшихся элементов. Пример:
Input: nums = [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is [3,2,2,2,3].
👨‍💻 Алгоритм: 1⃣Пройдитесь по массиву, создавая словарь для подсчета частоты каждого элемента. 2⃣На каждой итерации проверьте, существуют ли в словаре элементы, отличающиеся на 1 от текущего, и обновите максимальную длину гармоничной подпоследовательности. 3⃣Верните максимальную длину гармоничной подпоследовательности. 😎 Решение:
class Solution:
    def findLHS(self, nums: List[int]) -> int:
        count = {}
        res = 0
        
        for num in nums:
            count[num] = count.get(num, 0) + 1
            if num + 1 in count:
                res = max(res, count[num] + count[num + 1])
            if num - 1 in count:
                res = max(res, count[num] + count[num - 1])
        
        return res
Ставь 👍 и забирай 📚 Базу знаний

Растет налог — думаете сменить брокера? А риски видели? Налоговые изменения заставляют пересматривать, где лежат активы. 📊 В «Финам AI-скринер» появилась бесплатная диагностика счёта стороннего брокера. Подключите счёт по API-токену и получите разбор: 15+ умных сигналов по акциям и облигациям, прогнозы по трём сценариям, рейтинг риска и доходности, расчёт дивидендов и купонов. • Токен нужен только на чтение — безопасно • Прогноз по трём ценовым сценариям по каждой бумаге • Рейтинг риска: где потенциал, а где опасность • Расчёт дивидендов и купонов по портфелю ✅ Нажмите «Добавить счёт» и посмотрите портфель целиком. Информация не является индивидуальной инвестиционной рекомендацией и не гарантирует доходности. Инвестиции связаны с риском. Попробовать Финансовые услуги оказывает: АО «Инвестиционная компания «ФИНАМ». #реклама 16+ broker.finam.ru О рекламодателе

Задача: 1518. Water Bottles Сложность: easy Есть numBottles бутылок с водой, которые изначально наполнены водой. Вы можете обменять numExchange пустых бутылок на одну полную бутылку воды на рынке. Операция питья полной бутылки воды превращает её в пустую бутылку. Даны два целых числа numBottles и numExchange. Верните максимальное количество бутылок с водой, которые вы можете выпить. Пример:
Input: numBottles = 9, numExchange = 3
Output: 13
Explanation: You can exchange 3 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 9 + 3 + 1 = 13.
👨‍💻 Алгоритм: 1⃣Инициализируйте переменную ответа consumedBottles значением 0. 2⃣Продолжайте выполнять следующие действия, пока количество numBottles больше или равно numExchange: — Выпейте numExchange количество полных бутылок, т.е. добавьте numExchange к consumedBottles. — Уменьшите numExchange от доступных полных бутылок numBottles. — Обменяйте пустые бутылки на одну полную бутылку, т.е. увеличьте numBottles на одну. 3⃣Верните consumedBottles + numBottles. 😎 Решение:
class Solution:
    def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
        consumedBottles = 0

        while numBottles >= numExchange:
            consumedBottles += numExchange
            numBottles -= numExchange
            numBottles += 1

        return consumedBottles + numBottles
Ставь 👍 и забирай 📚 Базу знаний

Braun — технологии для безупречного ухода ✨Оригинальные бритвы, триммеры и эпиляторы ✨ Точность, комфорт и стиль — вместе с B
Braun — технологии для безупречного ухода ✨Оригинальные бритвы, триммеры и эпиляторы ✨ Точность, комфорт и стиль — вместе с Braun Купить #реклама market.yandex.ru О рекламодателе

Задача: 1253. Reconstruct a 2-Row Binary Matrix Сложность: medium Даны следующие сведения о матрице с n столбцами и 2 строками: Матрица является двоичной, то есть каждый элемент матрицы может быть 0 или 1. Сумма элементов 0-й (верхней) строки задана как upper. Сумма элементов 1-й (нижней) строки задана как lower. Сумма элементов i-го столбца (индексированного 0) - colsum[i], где colsum - целочисленный массив длины n. Ваша задача - восстановить матрицу с upper, lower и colsum. Вернуть ее в виде двумерного целочисленного массива. Если существует более одного правильного решения, будет принято любое из них. Если правильного решения не существует, верните пустой двумерный массив. Пример:
Input: upper = 2, lower = 1, colsum = [1,1,1]
Output: [[1,1,0],[0,0,1]]
👨‍💻 Алгоритм: 1⃣Инициализируйте две строки матрицы длины n с нулями. 2⃣Пройдите по массиву colsum и распределите значения 2 по обеим строкам, уменьшая upper и lower. Пройдите по массиву colsum и распределите значения 1 по строкам, уменьшая соответствующие upper или lower. 3⃣Проверьте, что остатки upper и lower равны нулю. Если все шаги выполнены успешно, верните восстановленную матрицу, иначе верните пустую матрицу. 😎 Решение:
def reconstructMatrix(upper, lower, colsum):
    n = len(colsum)
    top = [0] * n
    bottom = [0] * n
    
    for i in range(n):
        if colsum[i] == 2:
            if upper > 0 and lower > 0:
                top[i] = 1
                bottom[i] = 1
                upper -= 1
                lower -= 1
            else:
                return []
    
    for i in range(n):
        if colsum[i] == 1:
            if upper > lower:
                if upper > 0:
                    top[i] = 1
                    upper -= 1
                else:
                    return []
            else:
                if lower > 0:
                    bottom[i] = 1
                    lower -= 1
                else:
                    return []

    if upper == 0 and lower == 0:
        return [top, bottom]
    else:
        return []
Ставь 👍 и забирай 📚 Базу знаний

🎃 Хеллоуинская акция на easyoffer В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешь
🎃 Хеллоуинская акция на easyoffer В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешься всю жизнь 🍬Что внутри мешка с угощениями: – База вопросов и задач из собеседований – Примеры видео-ответов на вопросы – Записи реальных собеседований – Тренажёры «Проработка вопросов» и «Реальное собеседование» – Аналитика требований из вакансий – Автоотклики на вакансии 👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro

Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис ✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила»
Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис ✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы. Выберите формат, который подходит именно вашей команде: ✅ Базовый ИИ. Закладываем фундамент ✅ ИИ под роль. Навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды. ✅ ИИ-трансформация. Для компаний, которые хотят внедрять нейросети системно. ✅ ИИ-агенты. Для команд, которые хотят собирать собственных ИИ-агентов: от основ генеративного ИИ до рабочего прототипа без программирования. Библиотека ИИ-навыков для команды — бесплатно при покупке любой программы ИИ-тренингов до конца сентября Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

Задача: 179. Largest Number Сложность: medium Дан список неотрицательных целых чисел nums. Организуйте их таким образом, чтобы они составляли наибольшее число и верните его. Поскольку результат может быть очень большим, вам необходимо вернуть строку вместо целого числа. Пример:
Input: nums = [10,2]
Output: "210"
👨‍💻 Алгоритм: 1️⃣Преобразование и сортировка: Преобразовать каждое число в строку и отсортировать массив строк с использованием специального компаратора, который для двух строк 𝑎 и b сравнивает результаты конкатенации 𝑎+𝑏 и 𝑏+𝑎. 2️⃣Проверка на нули: Если после сортировки первый элемент массива равен "0", вернуть "0", так как все числа в массиве нули. 3️⃣Формирование результата: Конкатенировать отсортированные строки для формирования наибольшего числа и вернуть это число в виде строки. 😎 Решение:
class LargerNumKey(str):
    def __lt__(x, y):
        return x + y > y + x


class Solution:
    def largestNumber(self, nums):
        largest_num = "".join(sorted(map(str, nums), key=LargerNumKey))
        return "0" if largest_num[0] == "0" else largest_num
Ставь 👍 и забирай 📚 Базу знаний

Задача: 893. Groups of Special-Equivalent Strings Сложность: medium Вам дан массив строк одинаковой длины words. За один ход вы можете поменять местами любые два четных или любые два нечетных символа строки words[i]. Две строки words[i] и words[j] являются специально-эквивалентными, если после любого количества ходов words[i] == words[j]. Например, words[i] = "zzxy" и words[j] = "xyzz" являются специально-эквивалентными, потому что мы можем делать ходы "zzxy" -> "xzzy" -> "xyzz". Группа специально-эквивалентных строк из слов - это непустое подмножество слов, такое, что: каждая пара строк в группе специально-эквивалентна, и группа имеет максимально возможный размер (т.е, не существует строки words[i], не входящей в группу, такой, что words[i] является специально-эквивалентной каждой строке в группе). Верните количество групп специально-эквивалентных строк из слов. Пример:
Input: words = ["abcd","cdab","cbad","xyzz","zzxy","zzyx"]
Output: 3
👨‍💻 Алгоритм: 1⃣Для каждой строки в массиве words создать два новых списка: один из символов на четных позициях, другой из символов на нечетных позициях. Отсортировать оба списка и объединить их в одну строку, которая будет представлять каноническую форму строки. 2⃣Использовать множество, чтобы хранить все уникальные канонические формы строк. 3⃣Размер множества будет равен количеству групп специально-эквивалентных строк. 😎 Решение:
def numSpecialEquivGroups(words):
    unique_forms = set()
    
    for word in words:
        even_chars = sorted(word[0::2])
        odd_chars = sorted(word[1::2])
        canonical_form = ''.join(even_chars + odd_chars)
        unique_forms.add(canonical_form)
Ставь 👍 и забирай 📚 Базу знаний

Какие ИИ-инструменты брать в работу, а какие пропустить После этого урока картина станет понятнее: что подходит для ежедневны
Какие ИИ-инструменты брать в работу, а какие пропустить После этого урока картина станет понятнее: что подходит для ежедневных задач Python-разработчика, а что можно не пробовать. Открытый урок «Инструменты на базе ИИ для Python-разработчиков» пройдет 19 ноября в 20:00 онлайн. Разберем примеры из реальной разработки и поговорим о том, как не тратить время зря. На уроке: - какие инструменты ускоряют работу - для каких задач их стоит брать 📚Курс «Python-разработчик. Продвинутый уровень» стартует 30 ноября. Зарегистрироваться #реклама 16+ otus.ru О рекламодателе

Задача: 751. IP to CIDR Сложность: medium Дан указатель на начало односвязного списка и два целых числа left и right, где left <= right. Необходимо перевернуть узлы списка, начиная с позиции left и заканчивая позицией right, и вернуть измененный список. Пример:
Input: ip = "255.0.0.7", n = 10
Output: ["255.0.0.7/32","255.0.0.8/29","255.0.0.16/32"]
👨‍💻 Алгоритм: 1⃣Преобразовать начальный IP-адрес в целое число. 2⃣Пока количество оставшихся IP-адресов n больше нуля: Определить наибольший блок, который начинается с текущего IP-адреса и не превышает количество оставшихся IP-адресов. Добавить этот блок к результату. Увеличить текущий IP-адрес на размер блока. Уменьшить количество оставшихся IP-адресов n. 3⃣Преобразовать блоки обратно в формат CIDR и вернуть их. 😎 Решение:
def ip_to_int(ip):
    parts = ip.split('.')
    return (int(parts[0]) << 24) + (int(parts[1]) << 16) + (int(parts[2]) << 8) + int(parts[3])

def int_to_ip(num):
    return f"{(num >> 24) & 255}.{(num >> 16) & 255}.{(num >> 8) & 255}.{num & 255}"

def cidr(ip, prefix_length):
    return f"{ip}/{prefix_length}"

def find_cidr_blocks(start_ip, n):
    start = ip_to_int(start_ip)
    result = []
    
    while n > 0:
        max_size = 1
        while max_size <= start and max_size <= n:
            max_size <<= 1
        max_size >>= 1
        
        while start % max_size != 0:
            max_size >>= 1
        
        result.append(cidr(int_to_ip(start), 32 - max_size.bit_length() + 1))
        start += max_size
        n -= max_size
    
    return result
Ставь 👍 и забирай 📚 Базу знаний

Задача: 1009. Complement of Base 10 Integer Сложность: easy Дополнение целого числа - это целое число, которое получается, если перевернуть все 0 в 1 и все 1 в 0 в его двоичном представлении. Например, целое число 5 - это "101" в двоичном представлении, а его дополнение - "010", то есть целое число 2. Если задано целое число n, верните его дополнение. Пример:
Input: n = 5
Output: 2
👨‍💻 Алгоритм: 1⃣Определение длины двоичного представления: Найдите длину двоичного представления числа n. 2⃣Создание маски: Создайте маску, которая состоит из всех единиц и имеет ту же длину, что и двоичное представление числа n. 3⃣Вычисление дополнения: Примените побитовую операцию XOR между числом n и маской, чтобы получить дополнение числа. 😎 Решение:
class Solution:
    def findComplement(self, num: int) -> int:
        length = num.bit_length()
        mask = (1 << length) - 1
        return num ^ mask
Ставь 👍 и забирай 📚 Базу знаний

Ваши финансы собраны или рассредоточены? Всплеск глобального долга — напоминание, что ликвидность и её цена перераспределяются. ✅ DMA-счёт от «Финам» для юрлиц собирает все рынки и классы активов в единое управление: акции, РЕПО, обеспечение, прямые заявки — в одном счёте. • Единый пул ликвидности: все рынки и бумаги • РЕПО, обеспечение, прямые стаканы • Неттирование арбитражных позиций между рынками Мосбиржи • Гибкие ставки риска и фондирование под потребности компании 💻 Технические вопросы решаются напрямую с инженерами, без тикетов. Запросите встречу с командой DMA. Информация не является индивидуальной инвестиционной рекомендацией и не гарантирует доходности. Инвестиции связаны с риском. Перейти на сайт Финансовые услуги оказывает: АО «Инвестиционная компания «ФИНАМ». #реклама broker.finam.ru О рекламодателе

Задача: 1272. Remove Interval Сложность: medium Множество вещественных чисел можно представить как объединение нескольких несовпадающих интервалов, где каждый интервал имеет вид [a, b). Вещественное число x входит в множество, если один из его интервалов [a, b) содержит x (то есть a <= x < b). Вам дан отсортированный список непересекающихся интервалов, представляющих множество вещественных чисел, как описано выше, где intervals[i] = [ai, bi] представляет интервал [ai, bi). Вам также дан еще один интервал toBeRemoved. Верните набор вещественных чисел с интервалом toBeRemoved, удаленным из intervals. Другими словами, верните набор вещественных чисел, каждый x в котором находится в интервале, но не в toBeRemoved. Вашим ответом должен быть отсортированный список непересекающихся интервалов, как описано выше. Пример:
Input: intervals = [[0,2],[3,4],[5,7]], toBeRemoved = [1,6]
Output: [[0,1],[6,7]]
👨‍💻 Алгоритм: 1⃣Итерируйтесь по каждому интервалу в списке intervals. 2⃣Для каждого интервала, проверяйте пересечения с toBeRemoved и обновляйте список результатов. 3⃣Добавляйте непересекающиеся части текущего интервала в результат. 😎 Решение:
def removeInterval(intervals, toBeRemoved):
    result = []
    for start, end in intervals:
        if start < toBeRemoved[0]:
            result.append([start, min(end, toBeRemoved[0])])
        if end > toBeRemoved[1]:
            result.append([max(start, toBeRemoved[1]), end])
    return result
Ставь 👍 и забирай 📚 Базу знаний

Ищем менеджеров нейросетей, можно без опыта Опыт не нужен. Только телефон. Занятость — 3-6 часов в день. Нужно выполнять зада
Ищем менеджеров нейросетей, можно без опыта Опыт не нужен. Только телефон. Занятость — 3-6 часов в день. Нужно выполнять задачи с помощью нейросетей. Все это вы делаете из дома. Всему обучим на бесплатном курсе и после поможем со стартом. Что вас ждет за 3 дня: ✅ Уроки с практикой по 30 минут ✅ Домашние задания с проверкой и оплатой бонусами ✅ Выплата за каждую выполненную работу 🎓 Все, кто пройдет обучение, получат сертификат от школы с образовательной лицензией. Набор закрывается, как только группа заполнится. Чтобы занять место нажмите "Зарегистрироваться". Зарегистрироваться #реклама 16+ course.neurogansta.ru О рекламодателе

Задача: 1481. Least Number of Unique Integers after K Removals Сложность: medium Дан массив целых чисел arr и целое число k. Найдите минимальное количество уникальных целых чисел после удаления ровно k элементов. Пример:
Input: arr = [5,5,4], k = 1
Output: 1
Explanation: Remove the single 4, only 5 is left.
👨‍💻 Алгоритм: 1⃣Инициализация и построение частотного массива: Создайте хеш-таблицу для отслеживания частот элементов массива arr. Итеративно увеличивайте частоту элементов в хеш-таблице. 2⃣Сортировка и удаление элементов: Создайте массив частот и заполните его значениями из хеш-таблицы. Отсортируйте массив частот. Инициализируйте переменную для отслеживания числа удаленных элементов и итеративно добавляйте частоты, пока количество удаленных элементов не превысит k. 3⃣Возвращение результата: Если количество удаленных элементов превысило k, верните оставшееся количество уникальных элементов. Если все элементы были удалены, верните 0. 😎 Решение:
class Solution:
    def findLeastNumOfUniqueInts(self, arr, k):
        from collections import Counter
        freq_map = Counter(arr)
        frequencies = sorted(freq_map.values())
        
        elements_removed = 0
        for i, freq in enumerate(frequencies):
            elements_removed += freq
            if elements_removed > k:
                return len(frequencies) - i
        
        return 0
Ставь 👍 и забирай 📚 Базу знаний

Telegram-бот на Python, собранный с нуля Можно долго читать про Python, а можно за один урок пройти путь от идеи до бота, кот
Telegram-бот на Python, собранный с нуля Можно долго читать про Python, а можно за один урок пройти путь от идеи до бота, который отвечает пользователю. Именно так построен открытый урок «Telegram-бот с нуля на Python: от теории к практике». Подойдет тем, кто знает основы языка и ищет практическую задачу. Без громких обещаний: рабочий пример, который можно разобрать и повторить в одиночку. На уроке: - пройдем путь от идеи до работающего бота - посмотрим, как бот принимает сообщения и команды - разберем, как он отвечает Урок 10.11 в 20:00. Зарегистрироваться #реклама 16+ otus.ru О рекламодателе

Задача: 1254. Number of Closed Islands Сложность: medium Дана двумерная сетка, состоящая из 0 (земля) и 1 (вода).Остров - это максимальная 4-направленно связная группа из 0s, а закрытый остров - это остров, полностью (слева, сверху, справа, снизу) окруженный 1s. Верните количество закрытых островов. Пример:
Input: grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
Output: 2
👨‍💻 Алгоритм: 1⃣Пройдите по границам сетки и с помощью поиска в глубину (DFS) или поиска в ширину (BFS) замените все связанные земли (0) на воду (1). 2⃣Пройдите по всей сетке, используя DFS или BFS для поиска всех оставшихся островов (групп 0) 3⃣Подсчитайте количество таких островов. 😎 Решение:
def closedIsland(grid):
    def dfs(x, y):
        if x < 0 or y < 0 or x >= len(grid) or y >= len(grid[0]) or grid[x][y] == 1:
            return
        grid[x][y] = 1
        dfs(x + 1, y)
        dfs(x - 1, y)
        dfs(x, y + 1)
        dfs(x, y - 1)

    for i in range(len(grid)):
        for j in range(len(grid[0])):
            if (i == 0 or i == len(grid) - 1 or j == 0 or j == len(grid[0]) - 1) and grid[i][j] == 0:
                dfs(i, j)

    count = 0
    for i in range(1, len(grid) - 1):
        for j in range(1, len(grid[0]) - 1):
            if grid[i][j] == 0:
                dfs(i, j)
                count += 1

    return count
Ставь 👍 и забирай 📚 Базу знаний

🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не публикуются. Напрямую от компаний, с
🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров. 🔹 Python Jobs | Вакансии 🔹 Data Science ML | Вакансии 🔹 Golang Go Jobs | Вакансии 🔸 Все каналы с вакансиями

Почувствуйте ритм Дубая с отелями Jumeirah Семейный отдых обретает свой ритм - время для открытий, игр и особенных моментов вместе. Узнать больше #реклама jumeirah.com О рекламодателе