Python | LeetCode
Kanalga Telegram’da o‘tish
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish8 969
Obunachilar
-1024 soatlar
-327 kun
-10330 kun
Ma'lumotlar yuklanmoqda
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Oktabr '26Okt '26
Oktabr '26
+25
0 kanalda
Sentabr '26
+42
0 kanalda
Get PRO
Avgust '26
+43
1 kanalda
Get PRO
Iyul '26
+36
0 kanalda
Get PRO
Iyun '26
+44
2 kanalda
Get PRO
May '26
+40
0 kanalda
Get PRO
Aprel '26
+47
0 kanalda
Get PRO
Mart '26
+50
0 kanalda
Get PRO
Fevral '26
+42
0 kanalda
Get PRO
Yanvar '26
+69
0 kanalda
Get PRO
Dekabr '25
+55
0 kanalda
Get PRO
Noyabr '25
+105
0 kanalda
Get PRO
Oktabr '25
+110
0 kanalda
Get PRO
Sentabr '25
+67
0 kanalda
Get PRO
Avgust '25
+112
1 kanalda
Get PRO
Iyul '25
+128
4 kanalda
Get PRO
Iyun '25
+129
2 kanalda
Get PRO
May '25
+166
3 kanalda
Get PRO
Aprel '25
+178
0 kanalda
Get PRO
Mart '25
+217
3 kanalda
Get PRO
Fevral '25
+343
6 kanalda
Get PRO
Yanvar '25
+307
53 kanalda
Get PRO
Dekabr '24
+150
0 kanalda
Get PRO
Noyabr '24
+174
0 kanalda
Get PRO
Oktabr '24
+725
15 kanalda
Get PRO
Sentabr '24
+3 750
329 kanalda
Get PRO
Avgust '24
+260
0 kanalda
Get PRO
Iyul '24
+2 514
219 kanalda
Get PRO
Iyun '24
+3 546
232 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 28 Oktabr | 0 | |||
| 27 Oktabr | 0 | |||
| 26 Oktabr | +1 | |||
| 25 Oktabr | 0 | |||
| 24 Oktabr | 0 | |||
| 23 Oktabr | 0 | |||
| 22 Oktabr | +1 | |||
| 21 Oktabr | +1 | |||
| 20 Oktabr | +2 | |||
| 19 Oktabr | 0 | |||
| 18 Oktabr | +2 | |||
| 17 Oktabr | +1 | |||
| 16 Oktabr | +1 | |||
| 15 Oktabr | +1 | |||
| 14 Oktabr | 0 | |||
| 13 Oktabr | +1 | |||
| 12 Oktabr | 0 | |||
| 11 Oktabr | +1 | |||
| 10 Oktabr | +1 | |||
| 09 Oktabr | +2 | |||
| 08 Oktabr | +3 | |||
| 07 Oktabr | +1 | |||
| 06 Oktabr | +1 | |||
| 05 Oktabr | +2 | |||
| 04 Oktabr | 0 | |||
| 03 Oktabr | +1 | |||
| 02 Oktabr | 0 | |||
| 01 Oktabr | +2 |
Kanal postlari
Растет налог — думаете сменить брокера? А риски видели?
Налоговые изменения заставляют пересматривать, где лежат активы.
📊 В «Финам AI-скринер» появилась бесплатная диагностика счёта стороннего брокера. Подключите счёт по API-токену и получите разбор: 15+ умных сигналов по акциям и облигациям, прогнозы по трём сценариям, рейтинг риска и доходности, расчёт дивидендов и купонов.
• Токен нужен только на чтение — безопасно
• Прогноз по трём ценовым сценариям по каждой бумаге
• Рейтинг риска: где потенциал, а где опасность
• Расчёт дивидендов и купонов по портфелю
✅ Нажмите «Добавить счёт» и посмотрите портфель целиком.
Информация не является индивидуальной инвестиционной рекомендацией и не гарантирует доходности. Инвестиции связаны с риском.
Попробовать
Финансовые услуги оказывает: АО «Инвестиционная компания «ФИНАМ».
#реклама 16+
broker.finam.ru
О рекламодателе
| 2 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 287 |
| 3 | Braun — технологии для безупречного ухода
✨Оригинальные бритвы, триммеры и эпиляторы
✨ Точность, комфорт и стиль — вместе с Braun
Купить
#реклама
market.yandex.ru
О рекламодателе | 340 |
| 4 | Задача: 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 []
Ставь 👍 и забирай 📚 Базу знаний | 298 |
| 5 | 🎃 Хеллоуинская акция на easyoffer
В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешься всю жизнь
🍬Что внутри мешка с угощениями:
– База вопросов и задач из собеседований
– Примеры видео-ответов на вопросы
– Записи реальных собеседований
– Тренажёры «Проработка вопросов» и «Реальное собеседование»
– Аналитика требований из вакансий
– Автоотклики на вакансии
👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro | 350 |
| 6 | Я.Практикум: ИИ-тренинг с выездом экспертов в ваш офис
✨ Чтобы закрывать больше задач с меньшими ресурсами, нужна «суперсила». Обучайте сотрудников ИИ, чтобы автоматизировать операционные задачи и ускорить ключевые процессы.
Выберите формат, который подходит именно вашей команде:
✅ Базовый ИИ. Закладываем фундамент
✅ ИИ под роль. Навыки для конкретных функций и специалистов: руководители, продукт и аналитика, маркетинг и продажи, HR и L&D, операционные команды.
✅ ИИ-трансформация. Для компаний, которые хотят внедрять нейросети системно.
✅ ИИ-агенты. Для команд, которые хотят собирать собственных ИИ-агентов: от основ генеративного ИИ до рабочего прототипа без программирования.
Библиотека ИИ-навыков для команды — бесплатно при покупке любой программы ИИ-тренингов до конца сентября
Узнать больше
#реклама 16+
practicum.yandex.ru
О рекламодателе | 376 |
| 7 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 361 |
| 8 | Задача: 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)
Ставь 👍 и забирай 📚 Базу знаний | 367 |
| 9 | Какие ИИ-инструменты брать в работу, а какие пропустить
После этого урока картина станет понятнее: что подходит для ежедневных задач Python-разработчика, а что можно не пробовать.
Открытый урок «Инструменты на базе ИИ для Python-разработчиков» пройдет 19 ноября в 20:00 онлайн. Разберем примеры из реальной разработки и поговорим о том, как не тратить время зря.
На уроке:
- какие инструменты ускоряют работу
- для каких задач их стоит брать
📚Курс «Python-разработчик. Продвинутый уровень» стартует 30 ноября.
Зарегистрироваться
#реклама 16+
otus.ru
О рекламодателе | 380 |
| 10 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 384 |
| 11 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 441 |
| 12 | Ваши финансы собраны или рассредоточены?
Всплеск глобального долга — напоминание, что ликвидность и её цена перераспределяются.
✅ DMA-счёт от «Финам» для юрлиц собирает все рынки и классы активов в единое управление: акции, РЕПО, обеспечение, прямые заявки — в одном счёте.
• Единый пул ликвидности: все рынки и бумаги
• РЕПО, обеспечение, прямые стаканы
• Неттирование арбитражных позиций между рынками Мосбиржи
• Гибкие ставки риска и фондирование под потребности компании
💻 Технические вопросы решаются напрямую с инженерами, без тикетов. Запросите встречу с командой DMA.
Информация не является индивидуальной инвестиционной рекомендацией и не гарантирует доходности. Инвестиции связаны с риском.
Перейти на сайт
Финансовые услуги оказывает: АО «Инвестиционная компания «ФИНАМ».
#реклама
broker.finam.ru
О рекламодателе | 358 |
| 13 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 506 |
| 14 | Ищем менеджеров нейросетей, можно без опыта
Опыт не нужен. Только телефон. Занятость — 3-6 часов в день.
Нужно выполнять задачи с помощью нейросетей. Все это вы делаете из дома.
Всему обучим на бесплатном курсе и после поможем со стартом.
Что вас ждет за 3 дня:
✅ Уроки с практикой по 30 минут
✅ Домашние задания с проверкой и оплатой бонусами
✅ Выплата за каждую выполненную работу
🎓 Все, кто пройдет обучение, получат сертификат от школы с образовательной лицензией.
Набор закрывается, как только группа заполнится.
Чтобы занять место нажмите "Зарегистрироваться".
Зарегистрироваться
#реклама 16+
course.neurogansta.ru
О рекламодателе | 405 |
| 15 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 497 |
| 16 | Telegram-бот на Python, собранный с нуля
Можно долго читать про Python, а можно за один урок пройти путь от идеи до бота, который отвечает пользователю. Именно так построен открытый урок «Telegram-бот с нуля на Python: от теории к практике».
Подойдет тем, кто знает основы языка и ищет практическую задачу. Без громких обещаний: рабочий пример, который можно разобрать и повторить в одиночку.
На уроке:
- пройдем путь от идеи до работающего бота
- посмотрим, как бот принимает сообщения и команды
- разберем, как он отвечает
Урок 10.11 в 20:00.
Зарегистрироваться
#реклама 16+
otus.ru
О рекламодателе | 438 |
| 17 | Задача: 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
Ставь 👍 и забирай 📚 Базу знаний | 565 |
| 18 | 🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.
🔹 Python Jobs | Вакансии
🔹 Data Science ML | Вакансии
🔹 Golang Go Jobs | Вакансии
🔸 Все каналы с вакансиями | 570 |
| 19 | Почувствуйте ритм Дубая с отелями Jumeirah
Семейный отдых обретает свой ритм - время для открытий, игр и особенных моментов вместе.
Узнать больше
#реклама
jumeirah.com
О рекламодателе | 461 |
| 20 | Задача: 641. Design Circular Deque
Сложность: medium
Разработайте свою реализацию круговой двусторонней очереди (deque). Реализуйте класс MyCircularDeque: MyCircularDeque(int k) Инициализирует deque с максимальным размером k. boolean insertFront() Добавляет элемент в переднюю часть Deque. Возвращает true, если операция прошла успешно, или false в противном случае. boolean insertLast() Добавляет элемент в заднюю часть Deque. Возвращает true, если операция выполнена успешно, или false в противном случае. boolean deleteFront() Удаляет элемент из передней части Deque. Возвращает true, если операция прошла успешно, или false в противном случае. boolean deleteLast() Удаляет элемент из задней части Deque. Возвращает true, если операция прошла успешно, или false в противном случае. int getFront() Возвращает передний элемент из Deque. Возвращает -1, если Deque пуст. int getRear() Возвращает последний элемент из Deque. Возвращает -1, если Deque пуст. boolean isEmpty() Возвращает true, если Deque пуст, или false в противном случае. boolean isFull() Возвращает true, если Deque полон, или false в противном случае.
Пример:
Input
["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 2, true, true, true, 4]
👨💻 Алгоритм:
1⃣Инициализация и проверка состояний: Реализуйте конструктор для инициализации кольцевой двусторонней очереди заданного размера и методы для проверки пустоты и полноты очереди.
2⃣Операции вставки: Реализуйте методы вставки элементов в переднюю и заднюю части очереди с учетом кольцевой структуры.
3⃣Операции удаления: Реализуйте методы удаления элементов из передней и задней частей очереди с учетом кольцевой структуры и методы для получения переднего и заднего элементов очереди.
😎 Решение:
class MyCircularDeque:
def __init__(self, k: int):
self.k = k
self.deque = [0] * k
self.front = 0
self.rear = 0
self.size = 0
def insertFront(self, value: int) -> bool:
if self.isFull():
return False
self.front = (self.front - 1) % self.k
self.deque[self.front] = value
self.size += 1
return True
def insertLast(self, value: int) -> bool:
if self.isFull():
return False
self.deque[self.rear] = value
self.rear = (self.rear + 1) % self.k
self.size += 1
return True
def deleteFront(self) -> bool:
if self.isEmpty():
return False
self.front = (self.front + 1) % self.k
self.size -= 1
return True
def deleteLast(self) -> bool:
if self.isEmpty():
return False
self.rear = (self.rear - 1 + self.k) % self.k
self.size -= 1
return True
def getFront(self) -> int:
if self.isEmpty():
return -1
return self.deque[self.front]
def getRear(self) -> int:
if self.isEmpty():
return -1
return self.deque[(self.rear - 1 + self.k) % self.k]
def isEmpty(self) -> bool:
return self.size == 0
def isFull(self) -> bool:
return self.size == self.k
Ставь 👍 и забирай 📚 Базу знаний | 569 |
