IT-PythonHub-LeetCode
292 subscribers
35 photos
10 videos
34 links
🚀 Добро пожаловать в IT канал — твой проводник в мире программирования и алгоритмов!

📚 Полезные материалы по Python программированию и алгоритмам.

🔥Разборы LeetCode задач с реальных собеседований

Ссылка на GitHub: https://github.com/ZheglY
Download Telegram
📚 Лучшие книги по Python — подборка для системного изучения # 1

🔰 Новички и средний уровень

1. "Изучаем Python" — Марк Лутц (2 тома)
Классика. Огромный, но невероятно подробный справочник по Python. Подходит для тех, кто хочет основательно выучить язык с нуля: переменные, функции, ООП, работа с файлами, исключения.

2. "Automate the Boring Stuff with Python" — Al Sweigart
Практическая книга для новичков, которые хотят автоматизировать рутину: работа с файлами, Excel, PDF, клавиатурой, браузером и др. Пишешь полезный код с первых страниц.

‼️ Книги можно скачать в коментариях 👇

@IT_Python_ZheglY | #КнигиПоПрограммированию
👍3
📚 Лучшие книги по Python — подборка для системного изучения # 2

🏆 Продвинутый уровень

1. "Python. К вершинам мастерства" — Люсиану Рамальо
Одна из самых глубоких книг по Python. Изучает "питоничные" конструкции: итераторы, генераторы, корутины, декораторы, метаклассы, асинхронность. Для тех, кто уже пишет на Python, но хочет понимать, как работает всё под капотом.

2. "Effective Python" — Бретт Слаткин
90 кратких и практичных советов, как писать понятный, читаемый и эффективный код.
Книга для разработчиков, которые хотят прокачать стиль и архитектурные решения.

3. "Чистый Python. Тонкости программирования для профи" — Дэн Бейдер
Разбор скрытых возможностей Python: замыкания, функции высшего порядка, генераторы, lambda, коллекции и стандартные библиотеки.

‼️ Книги можно скачать в коментариях 👇

@IT_Python_ZheglY | #КнигиПоПрограммированию
2
📚 Лучшие книги по Python — подборка для системного изучения # 3

⚙️ Машинное обучение и глубокое обучение

1. "Глубокое обучение на практике. На примерах Scikit-Learn, Keras и TensorFlow" - Aurelien Geron
Мощная практическая книга по машинному обучению. Пошаговое создание моделей: от линейной регрессии до нейросетей.
Используются Scikit-Learn, Keras, TensorFlow. Подходит для старта в ML и глубокой практики.

2. "Глубокое обучение на Python" - Francois Chollet
Автор — разработчик Keras. Понятное объяснение глубокого обучения: dense- и conv-сети, обучение, переобучение, генерация изображений и текста.
Подходит для тех, кто хочет понять идею и механику нейросетей на Python.

‼️ Книги можно скачать в коментариях 👇

@IT_Python_ZheglY | #КнигиПоПрограммированию
📚 Лучшие книги по Python — подборка для системного изучения # 4

🧑‍💻 Алгоритмы и структуры данных

1. "Грокаем алгоритмы" — Адитья Бхаргава
Самая популярная книга для визуального изучения алгоритмов. Простым языком и с иллюстрациями объясняет: двоичный поиск, рекурсию, сортировки, графы, хэш-таблицы и др. Подходит для подготовки к LeetCode и собеседованиям.


📊 Анализ данных

2. "Python for Data Analysis" — Уэс МакКинни
Библия для анализа данных на Python. Автор — создатель библиотеки Pandas.
В книге: Pandas, NumPy, очистка и подготовка данных, визуализация, временные ряды.
Обязательно к прочтению для аналитиков и дата-сайентистов.

‼️ Книги можно скачать в коментариях 👇

@IT_Python_ZheglY |#КнигиПоПрограммированию
🔥LeetCode: Valid Parentheses — #20
Проверяем, правильно ли расставлены скобки ()[]{}

Пример:

"( { [ ] } )" → Верно
"( ) [ ] { }" → Верно
"( ]" → Неверно

🧠 Как работает код:

1. Открывающие скобки кидаем в stack

2. Eсли стек пуст или скобки не совпадают возвращаем False

3. Если всё ок — убираем из стека скобку

В конце стек должен быть пуст, это значит скобки правильно закрыты

💡Подробное видео решение
https://neetcode.io/problems/validate-parentheses

t.me/IT_Python_ZheglY | #LeetCode
🔥 Что такое NeetCode и почему это круто для изучения алгоритмов?

NeetCode — это тщательно отобранная коллекция задач по алгоритмам и структурам данных, организованная в виде удобного дерева знаний.

💭 Зачем нужен NeetCode если есть более известная платформа Leetcode?

NeetCode даст вам больше в плане обучения. За вас продумали детальный план, который помогает системно прокачивать навыки, шаг за шагом, от простых тем и задач к сложномым. А качественные видеоразборы к каждой теме и задаче помогают лучше усвоить материал!

Чёткая структура: задачи разбиты по темам и подтемам — как ветви дерева, чтобы не запутаться и видеть прогресс.

Оптимальный порядок: сначала базовые понятия, затем более сложные — ты учишься последовательно.

Подготовка к собеседованиям: самые популярные и важные задачи для интервью.

Экономия времени: не нужно искать задачи в разных местах — всё под рукой.

💡Если ты хочешь чёткий, понятный план и быстрое погружение в практику, жми на ссылку снизу! 👇
https://neetcode.io/roadmap
🔥 Разбор задачи LeetCode #121: Best Time to Buy and Sell Stock

Дан массив цен на акцию prices, где prices[i] — цена акции в день i. Нужно найти максимальную прибыль, купив и продав акции ровно один раз (купить раньше, чем продавать). Если прибыль получить нельзя, вернуть 0.

Пример:

[7,1,5,3,6,4] -> 5
Покупаем в день 2 (цена = 1) и продаем в день 5 (цена = 6), прибыль = 6-1 = 5.

[7,6,4,3,1] -> 0 # максимальная прибыль 0

💡 Идея решения:

1. Проходим по массиву цен, отслеживая минимальную цену покупки на текущий момент.

2. В каждый день вычисляем потенциальную прибыль, если продать акцию именно сегодня (текущая цена минус минимальная цена).

3. Обновляем максимум прибыли, если текущая прибыль больше предыдущего максимума.

💡Подробное видео решение
https://neetcode.io/solutions/best-time-to-buy-and-sell-stock

t.me/IT_Python_ZheglY | #LeetCode
🔥1
IT-PythonHub-LeetCode pinned «📚 Лучшие книги по Python — подборка для системного изучения # 1 🔰 Новички и средний уровень 1. "Изучаем Python" — Марк Лутц (2 тома) Классика. Огромный, но невероятно подробный справочник по Python. Подходит для тех, кто хочет основательно выучить язык с…»
В Python есть зарезервированные ключевые слова — это слова, которые нельзя использовать как имена переменных, функций или классов. Они встроены в язык и несут особое значение.

📌 Идентификаторы — это имена, которые вы придумываете сами: названия переменных, функций и т.д. Они:

• чувствительны к регистру (MyVar ≠ myvar);

• должны начинаться с буквы или подчёркивания;

• не могут быть ключевыми словами.

❗️ Всегда проверяй, чтобы имя переменной не совпадало с ключевым словом, иначе будет ошибка — SyntaxError.

💡Небольшая статья на эту тему ключевых слов и идентификаторов в Python 👇
https://ravesli.com/keywords-identifiers-python/

t.me/IT_Python_ZheglY | #articles #python
🎁 Бонусные книги

• "Чистый код" — Роберт Мартин
Книга, обязательная к прочтению каждому айтишнику! Библия по написанию читаемого, поддерживаемого и качественного кода. Учишься писать так, чтобы код «говорил сам за себя». Примеры приведены на Java, но принципы универсальны для любого языка.

• «Проект Феникс» — Джин Ким, Кевин Беар, Джордж Спэффорд
Это не книга про алгоритмы и код, а вдохновляющий история о том, как команда IT-специалистов спасает провальный проект и внедряет DevOps-подходы. Этот роман помогает взглянуть масштабно на процессы работы в IT и понять, как технологии влияют на успех бизнеса.
Обязательно для разработчиков, тимлидов и менеджеров!

‼️ Больше книг в репостах! Книги можно скачать в коментариях 👇

#КнигиПоПрограммированию
💡 Obsidian — лучшая программа для заметок, о которой ты (возможно) ещё не знал!


Что такое Obsidian?

Obsidian — это локальный, быстрый и гибкий редактор заметок на Markdown, построенный вокруг идеи гиперсвязанных знаний.
Ты не просто пишешь заметки — ты создаёшь сеть идей, между которыми можно перемещаться, как между нейронами.


🔥Ключевые возможности Obsidian

📝 Markdown — лёгкий, чистый и вечно поддерживаемый формат. Пиши без отвлечения.

🔗 Двусторонние ссылки — связывай заметки между собой которые помогут структурировать информацию и будут отображаться в виде паутины знаний

🧠 Граф знаний — визуализация всех твоих заметок и связей между ними. Это словно видеть, как работает твой мозг.

🗂 Локальное хранение — все файлы хранятся на твоём устройстве. Ты владеешь своими данными.

💬 Встроенные теги, вложенные папки, быстрый поиск — находи нужное за секунды.

🔌 Плагины — десятки расширений: от планировщиков, до AI-помощников и календарей.

t.me/IT_Python_ZheglY | #articles
🔻Скачать Obsidian 👇
https://obsidian.md/download

💡Вводный видеоролик, который отлично объясняет базовые концепции: граф знаний, ссылки, плагины и настройку:👇
https://www.youtube.com/watch?v=zYlDnmlo39Q&t=1357s

🔥Obsidian — это не просто приложение для заметок, а гибкая экосистема, которую можно прокачать под себя с помощью сообщества плагинов. Следующий пост будет посвящен выбору плагинов для Obsidian.

Самостоятельно повыбирать плагины можно здесь 👇
https://obsidian.md/plugins

🛠 Как установить и включить плагины в Obsidian:

1. Перейди в:
Settings → Community plugins → Turn off Safe Mode → Browse

2. Найди нужный плагин, например:
Sliding Panes (Andy's Mode)

3. Нажми Install, а затем Enable

🎉 Готово — интерфейс и функции изменятся автоматически!
(Если нет — просто перезапусти Obsidian)

t.me/IT_Python_ZheglY | #articles
🔥 Топ самый популярных плагинов для Obsidian #1

📅 Calendar
Базовый, но очень удобный — нужен почти всем. Дает визуальный календарь и поддержку ежедневных заметок.
https://obsidian.md/plugins?id=calendar

📓 Periodic Notes
Работает вместе с Calendar. Помогает вести логи по дням, неделям, месяцам.
https://obsidian.md/plugins?id=periodic-notes

📊 Dataview
Самый мощный плагин для превращения е Markdown-заметок в интерактивные базы данных с помощью простого языка запросов, похожего на SQL
https://obsidian.md/plugins?id=dataview

📌 Tasks
Гибкая система задач: теги, дедлайны, статусы — всё в Markdown. Заменяет отдельные таск-менеджеры.
https://obsidian.md/plugins?id=obsidian-tasks-plugin

🗃 File Tree Alternative
Улучшенная боковая панель с папками и превью. Особенно полезен при больших хранилищах.
https://obsidian.md/plugins?id=file-tree-alternative

📝 Templater
Автоматизирует создание заметок: можно вставлять дату, переменные, даже писать мини-скрипты.
https://obsidian.md/plugins?id=templater-obsidian

✍️ Excalidraw
Лучший визуальный инструмент прямо внутри Obsidian. Майндмэпы, схемы, наброски — всё в одном.
https://obsidian.md/plugins?id=obsidian-excalidraw-plugin

#Плагины
🔥Разбор задачи Valid Palindrome (LeetCode #125)

Нужно определить, является ли строка палиндромом — читается ли она одинаково вперёд и назад, игнорируя пробелы, регистр и знаки препинания.

"Madam" -> True
"Was it a car or a cat I saw?" -> True
"race a car" -> False

💡Пояснение кода:

• Перебираем каждый символ в строке string и приводим все буквы к нижнему регистру если если символ — буква или цифра.

• Собираем все такие символы обратно в одну строку clean.

• Сравниваем clean с её перевёрнутым вариантом.

Другие способы решения можно посмотреть здесь👇
https://neetcode.io/solutions/valid-palindrome

t.me/IT_Python_ZheglY | #LeetCode
🔥3
🔥Разбор задачи LeetCode #136: Single Number

• Дан массив чисел, в котором все числа встречаются дважды, кроме одного — найти этот единственный элемент.

Input: [2, 2, 1]
Output: 1

💡 Идея решения и разбор кода:
• Используем XOR — побитовое исключающее ИЛИ
• Если применить XOR ко всем элементам массива, пары исчезнут и останется только один уникальный элемент.

1. Инициализируем переменную result значением 0 (переменная будет хранить промежуточный результат операции XOR)

2. Проходимся по циклу сравнивая биты чисел. Если биты совпадают — результат 0, иначе 1.

x ^ x = 0
x ^ 0 = x

Таким образом пары одинаковых чисел "обнуляются", оставляя только уникальные числа.

📊 Сложность:
Время: O(n), где n — длина массива.
Память: O(1).

Ссылка на задачу LeetCode👇
https://leetcode.com/problems/single-number/description/

❗️Более подробно о логического оператор XOR разборем в следующем посте

t.me/IT_Python_ZheglY | #LeetCode
🔥1
🔥Как работает логический оператор XOR:

• Числа переводятся в биты и с помощью логической операции ИЛИ, и сравниваются по правилу:

x ^ x = 0
x ^ 0 = x

• Таким образом запись 4 ^ 1 будет выглядить так:

100 (4)
^ 001 (1)
-------
101 (5)

💡 Как работает цикл XOR из задачи выше #136: Single Number:

nums = [4, 1, 2, 1, 2]

result = 0 ^ 4 → 4
result = 4 ^ 1 → 5
result = 5 ^ 2 → 7
result = 7 ^ 1 → 6 ← 1 встретилось второй раз — "удалилось"
result = 6 ^ 2 → 4 ← 2 тоже встретилось второй раз — "удалилось"

❗️Однако проще это представить таким способом:

= 4 ^ 1 ^ 2 ^ 1 ^ 2
= (1 ^ 1) ^ (2 ^ 2) ^ 4
= 0 ^ 0 ^ 4
= 4

📌 Итоги и доп. материал:

XOR не знает, что число повторяется, но результат операции ведёт себя так, будто повторяющиеся числа удаляются.Если число встречается дважды, результат будет такой, будто его не было вообще.
Это делает XOR идеальным инструментом для задач, где нужно "удалить дубли".

Больше о различных логических операторах👇
https://www.geeksforgeeks.org/python-bitwise-operators/

Подробнее о XOR 👇
https://javarush.com/groups/posts/operator-xor-v-python

#articles #python
🐍 *args | **kwargs — Важны звёздочки, а не имена!

🗣 В Python распаковку аргументов делают операторы * и
**. А args, kwargs — это просто соглашения по имени, ты можешь называть их как угодно!

🌟 Что делают звёздочки:

* — собирает все переданные позиционные аргументы в кортеж.
** — собирает все переданные именованные аргументы (ключ=значение) в словарь.

Можно писать так, и работать будет одинаково:

def func(*args, kwargs):
pass

def func(*anything, **hello):
pass


💡Вывод:

📌Звёздочки — это настоящие операторы, а имена вроде args и kwargs — просто соглашение ради читаемости.

📌Эти операторы необходимы для более гибкого приема аргументов, когда заранее не известно сколько их будет.

🖥 Больше информации о args и kwargs можно прочесть тут:
https://sky.pro/wiki/python/rabota-s-argumentami-v-python-args-i-kwargs/

t.me/IT_Python_ZheglY | #articles #python
🔥3👍2
🔥Задача с LeetCode #344: Reverse String

Необходимо развернуть список символов in-place, т.е. без создания нового списка.

Input: ["n","e","e","t"]
Output: ["t","e","e","n"]

💡Идея решения:

• Создаём два указателя — left в начале, right в конце.

• Пока они не встретятся, меняем местами s[left] и s[right].

• После каждой замены сдвигаем указатели навстречу друг другу.

💡Альтернативное решение:
def reverseString(s):
s.reverse()


🖥 Подробное видео решение можно посмотреть здесь👇
https://neetcode.io/solutions/reverse-string

@IT_Python_ZheglY | #leetcode #python
4
👏4🔥3
💡 Что такое оценка алгоритма и зачем она нужна?

Оценка алгоритма — это способ понять, насколько эффективно работает код: по времени выполнения и объёму используемой памяти.

⏱️ Временная сложность (Time Complexity) — показывает, как изменяется время выполнения алгоритма при росте объёма данных. Ниже — от лучших к худшим:

O(1) — константное время. Алгоритм работает одинаково быстро при любом размере входа.
Пример: доступ к элементу массива по индексу

O(log n) — логарифмическая сложность. Алгоритм быстро сужает область поиска.
Пример: бинарный поиск в отсортированном массиве

O(n) — линейная сложность. Время растёт пропорционально числу элементов.
Пример: пройтись по массиву и найти максимум

O(n log n) — эффективно масштабируется, часто встречается в быстрых сортировках.
Пример: Merge Sort, Heap Sort

⚠️ Сложности, которых стоит избегать:

🚫 O(n²) — квадратичная сложность, характерна для вложенных циклов.
Пример: пузырьковая сортировка, сравнение всех пар

🚫 O(n³) — кубическая сложность, обычно три вложенных цикла.
Пример: наивное перемножение матриц

🚫 O(2ⁿ) — экспоненциальная. Время выполнения удваивается с каждым шагом.
Пример: рекурсивный подсчёт чисел Фибоначчи

🚫 O(n!) — факториальная. Перебираются все возможные варианты.
Пример: задача коммивояжёра, генерация всех перестановок

Прочесть более подробно о Big O можно здесь: 👇
https://habr.com/ru/articles/782608/

@IT_Python_ZheglY | #python
👏9🔥8