This media is not supported in your browser
VIEW IN TELEGRAM
Яндекс проведет Dream → Teamlead конференцию которая поможет тебе прокачать управленческие навыки.
Москва, офис Яндекса,
ул. Льва Толстого, д.16
19 июля | 11:00 — 19:00
🔗 Для участия регистрируйся по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🥰12👍11👏8😁2
This media is not supported in your browser
VIEW IN TELEGRAM
🚫Минусы:
def counting_sort(arr):
max_val = max(arr)
count = [0] * (max_val + 1)
for num in arr:
count[num] += 1
index = 0
for i in range(len(count)):
while count[i] > 0:
arr[index] = i
index += 1
count[i] -= 1
@IT_Python_ZheglY | #сортировки| #python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🔥9🥰6👏2💯2🤮1
Ответы — в новом выпуске! Вот главные моменты:
▫️00:00-07:15 — Почему 90% комментариев — это извинения за плохой код. Почему следует избегать этого?
▫️08:50-10:20 — Типы токсичных комментариев. Когда комментарии деструктивно влияют на код?
▫️10:20-17:10 — Когда комментарии имеют место быть? Виды полезеных комментриев и договоренности программистов
▫️17:20-27:16 — Какие комментарии не должны использоваться в коде? Примеры плохих комментариев.
https://music.yandex.ru/album/18513266/track/110991282?utm_medium=copy_link
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥12🥰11🤮1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Merge Sort — сортировка слиянием
Merge Sort — один из самых известных и фундаментальных алгоритмов сортировки, используемый в продакшене. Основан на принципе "разделяй и властвуй": делит массив, сортирует части и сливает их в упорядоченный результат. Стабильный, предсказуемый и надёжный.
📌 Плюсы:
• Хорошая гарантированная сложность даже в худшем случае O(n log n)
• Стабильная сортировка — сохраняет порядок равных элементов
• Хорошо работает с большими объемами данных
⚠️ Единственный недостаток:
• Требует дополнительной памяти O(n), потому что создаёт новые массивы при слиянии.
🗣️ Также встречается в собеседованиях как классический пример сортировки "разделяй и властвуй".
@IT_Python_ZheglY | #сортировки
Merge Sort — один из самых известных и фундаментальных алгоритмов сортировки, используемый в продакшене. Основан на принципе "разделяй и властвуй": делит массив, сортирует части и сливает их в упорядоченный результат. Стабильный, предсказуемый и надёжный.
• Хорошая гарантированная сложность даже в худшем случае O(n log n)
• Стабильная сортировка — сохраняет порядок равных элементов
• Хорошо работает с большими объемами данных
⚠️ Единственный недостаток:
• Требует дополнительной памяти O(n), потому что создаёт новые массивы при слиянии.
@IT_Python_ZheglY | #сортировки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23🔥14👍12💯6🍓2💋2🤮1🍾1
💡Реализация Merge Sort на языке Python 👇
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
❤19🔥14👍10💩1
Все о карьере в IT в этом подкасте!
🎧 Ссылка на выпуск:
https://music.yandex.ru/album/16469736/track/87074010?utm_medium=copy_link
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🔥14👏10🤮1
🔥Задача с LeetCode #647: Palindromic Substrings
🔜 Требуется подсчитать количество палиндромных подстрок в заданной строке.
Палиндром - это строка, которая читается одинаково как слева направо, так и справа налево.
Input: s = "aaa"
Output: 6
Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa"
💡 Идея решения:
Алгоритм основан на идее, что каждый палиндром в строке имеет центр (или два центра для палиндромов четной длины). Он проходит по всем возможным центрам и "расширяется" в обе стороны, проверяя, образуется ли палиндром.
🔵 В нечетных палиндромах каждый символ рассматриваем как центр
🔵 В четных палиндромах каждую пару соседних символов рассматриваем как центр
🖥 Подробное видео решение можно посмотреть здесь
@IT_Python_ZheglY | #leetcode #python
Палиндром - это строка, которая читается одинаково как слева направо, так и справа налево.
Input: s = "aaa"
Output: 6
Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa"
Алгоритм основан на идее, что каждый палиндром в строке имеет центр (или два центра для палиндромов четной длины). Он проходит по всем возможным центрам и "расширяется" в обе стороны, проверяя, образуется ли палиндром.
@IT_Python_ZheglY | #leetcode #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9❤8🍓2🤮1💋1
🔥Задача с Leetcode #206: Reverse Linked List
🔜 Дана голова односвязного списка. Нужно развернуть список и вернуть новую голову.
Исходный список: 1 -> 2 -> 3 -> 4 -> 5
Развёрнутый: 5 -> 4 -> 3 -> 2 -> 1
🔖 Разбор кода:
🔵 prev (previous) - Хранит предыдущий узел, который станет следующим при развороте.
🔵 curr (current) - Текущий узел, который мы обрабатываем.
🔵 next_node - Временное хранилище для следующего узла перед разворотом
💡 Идея алгоритма:
🔵 Сохраняем next_node — чтобы не потерять следующий узел после изменения ссылки.
🔵 Разворачиваем ссылку —
🔵 Сдвигаем указатели — двигаем prev и curr вперёд.
🖥 Подробное решение можно посмотреть здесь
🧑💻 @IT_Python_ZheglY | #leetcode #python
Исходный список: 1 -> 2 -> 3 -> 4 -> 5
Развёрнутый: 5 -> 4 -> 3 -> 2 -> 1
curr.next
теперь указывает на prev.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍7👏5🔥1🤮1🍓1
Все о "подводных камнях" в ООП рассказывают опытные разработчики в этом подкасте
#Python #подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👏8👍3🤮1🍓1🍾1
HTTP-коды ответов (Status Codes) — это трехзначные числа, которые сервер отправляет клиенту для информирования о результате обработки запроса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤8👏8🔥2💩2🍾1
HTTP-коды состояния 400 (Client Error) и 500 (Server Error) — это две основные категории ошибок, которые указывают на проблемы при обработке запроса. Вот их ключевые различия и особенности:
● 400 Bad Request Сервер не понял запрос из-за синтаксической ошибки
● 401 Unauthorized Требуется аутентификация
● 403 Forbidden Доступ запрещён
● 404 Not Found Сервер не нашёл запрашиваемый ресурс
● 405 Method Not Allowed Используется неподдерживаемый HTTP-метод
● 500 Internal Server Error — Общая ошибка сервера
● 502 Bad Gateway — Проблема с прокси-сервером или API
● 503 Service Unavailable — Сервер временно недоступен.
1. Полный список кодов с пояснениями от Mozilla
2. QaRocks
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🍓5👏4🦄4💩2❤1🍾1
🌳 Основные деревья в Python и их применение
🗣️ Деревья — иерархические структуры данных, где каждый узел (нода) имеет родителя (кроме корня) и потомков. Используются для представления файловых систем, иерархий данных, оптимизации поиска и сортировки. В Python нет встроенных деревьев, но их реализуют через классы или библиотеки (например, bigtree).
🔵 Красно-черное — Самобалансирующееся BST. Основа словарей Python, СУБД.
🔵 B+ -дерево — Оптимизировано для дисковых операций. Стандарт для индексов баз данных.
🔵 Бинарная куча — Min/Max-куча для приоритетных очередей. Основа для алгоритма Дейкстры.
🔵 AVL-дерево — Строго сбалансированное BST. Для систем с гарантированным временем поиска.
🔵 Trie (Префиксное) — Хранит строки как цепочки символов. Для автодополнения и словарей.
🔵 B-дерево — Многопутевое дерево для файловых систем. Оптимизация чтения/записи блоков.
🔵 BST (Бинарное) — Базовое дерево поиска и понимания устройства | Учебные проекты.
🔵 Общее дерево — Узлы с произвольным числом потомков. Для XML/JSON и иерархий.
📚 Дополнительные материалы для прочтения:
базовые знание деревьев sky.pro
кратко об обходах и построениях
🔜 Далее мы вместе подробнее изучим каждое дерево и разберем код их построения!
🧑💻 @IT_Python_ZheglY | #python
базовые знание деревьев sky.pro
кратко об обходах и построениях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🤮1
🌳 Основные деревья в Python |Красно-чёрное дерево (КЧД)
🗣️ Красно-чёрное дерево (КЧД) — это умная структура данных, которая автоматически балансируется при добавлении или удалении элементов. Благодаря этому операции поиска, вставки и удаления работают за O(log n) — быстро даже для больших данных!
🔖 Основные правила:
🔵 Цвета — каждый узел красный или чёрный.
🔵 Корень и листья — всегда чёрные (листья — это пустые узлы NIL).
🔵 Красные узлы — не могут быть родителями красных (нет двух красных подряд).
🔵 Чёрная высота — на всех путях от корня до листьев одинаковое число чёрных узлов.
❔ Как оно балансируется?
Если после вставки нарушаются правила, дерево перекрашивает узлы и делает повороты (влево/вправо).
Например, если два красных узла оказались рядом, один перекрашивается в чёрный.
💡 Зачем это нужно?
КЧД используется в базах данных, языковых библиотеках и везде, где важен быстрый поиск и динамическое обновление.
📚 Дополнительные материалы для прочтения:
Основные знания Tproger
Код реализации можно посмотреть здесь: https://github.com/ersul4ik/rbt
🧑💻 @IT_Python_ZheglY | #python #деревья
Если после вставки нарушаются правила, дерево перекрашивает узлы и делает повороты (влево/вправо).
Например, если два красных узла оказались рядом, один перекрашивается в чёрный.
💡 Зачем это нужно?
КЧД используется в базах данных, языковых библиотеках и везде, где важен быстрый поиск и динамическое обновление.
Основные знания Tproger
Код реализации можно посмотреть здесь: https://github.com/ersul4ik/rbt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤10🤮1
🌳 Основные деревья в Python | Бинарная куча
Бинарная куча — это специальная древовидная структура данных, которая удовлетворяет свойству кучи
🔵 Min-куча: каждый родительский элемент меньше или равен своим дочерним элементам
🔵 Max-куча: каждый родительский элемент больше или равен своим дочерним элементам.
Это позволяет эффективно добавлять и извлекать элементы с наивысшим приоритетом, используя алгоритмическое время O(log n).
🔜 В Python для работы с бинарными кучами используется встроенный модуль heapq, который реализует алгоритм очереди с приоритетами.
📚 Дополнительные материалы для прочтения:
Официальная документация Python
🧑💻 @IT_Python_ZheglY | #python #деревья
Бинарная куча — это специальная древовидная структура данных, которая удовлетворяет свойству кучи
Это позволяет эффективно добавлять и извлекать элементы с наивысшим приоритетом, используя алгоритмическое время O(log n).
📚 Дополнительные материалы для прочтения:
Официальная документация Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10❤6🥰2🤡1
Базовая реализация бинарной кучи (применение модуля heapq)
import heapq
print("🧠 БИНАРНАЯ КУЧА: ОСНОВНЫЕ СЦЕНАРИИ")
# 1. БАЗОВЫЕ ОПЕРАЦИИ
print("\n1️⃣ БАЗОВЫЕ ОПЕРАЦИИ")
numbers = [7, 2, 5, 9, 1, 3]
heap = numbers.copy()
heapq.heapify(heap)
print(f"Исходный: {numbers}")
print(f"Куча: {heap}")
print(f"Минимум: {heap[0]}")
print(f"Извлечение: {[heapq.heappop(heap) for _ in range(3)]}...")
# 2. MAX-КУЧА
print("\n2️⃣ MAX-КУЧА")
max_heap = [-x for x in [3, 1, 4, 5]]
heapq.heapify(max_heap)
print(f"Max-куча: {max_heap}")
print(f"Максимум: {-max_heap[0]}")
# 3. ПРИОРИТЕТНАЯ ОЧЕРЕДЬ
print("\n3️⃣ ПРИОРИТЕТНАЯ ОЧЕРЕДЬ")
tasks = []
heapq.heappush(tasks, (2, "Почистить код"))
heapq.heappush(tasks, (0, "Пофиксить баг!"))
heapq.heappush(tasks, (1, "Деплой"))
print("Очередь по приоритету:")
while tasks:
priority, task = heapq.heappop(tasks)
print(f"Приоритет {priority}: {task}")
🔥8👍4🤯3🤮1
Какой будет вывод этого кода?
Anonymous Quiz
49%
[1] [2]
15%
[1] [1, 2]
10%
[1, 2] [1, 2]
6%
[1] [2, 1]
20%
Ошибка
❤7👍6👏2🤮1🤡1
🌳 Основные деревья в Python | B+ дерево ( B+ tree )
Вы когда-нибудь задумывались, как базы данных мгновенно находят нужные записи среди огромного количества данных? Всё дело в эффективной структуре данных — B+ дереве.
🔖 Основные особенности дерева:
🔵 Все данные — в листьях. Внутренние узлы выступают лишь как «указатели» или «оглавление», что делает поиск по диапазону невероятно быстрым (например, «найти всех пользователей с 10 по 100»).
🔵 Листья связаны в список. Это позволяет легко и быстро обходить все данные в отсортированном порядке.
🔵 Высота дерева минимальна. Благодаря этому для поиска любой зап
🔜 Где используется? Практически везде! Это основа индексов в MySQL, PostgreSQL, MongoDB и многих других СУБД. Именно B+-дерево позволяет им работать быстро и стабильно.
📚 Дополнительные материалы для прочтения:
Базовые знания habr.com
Реализация дерева GitHub
🧑💻 @IT_Python_ZheglY | #python #деревья
Вы когда-нибудь задумывались, как базы данных мгновенно находят нужные записи среди огромного количества данных? Всё дело в эффективной структуре данных — B+ дереве.
📚 Дополнительные материалы для прочтения:
Базовые знания habr.com
Реализация дерева GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4👏4🤮1