Python Simple
226 subscribers
55 photos
6 videos
175 links
by mr.Gold
Download Telegram
Всем привет! Стало интересно, на сколько востребована тема стажировок и сколько времени в канале стоит уделять стажировкам
Anonymous Poll
65%
Буду пробовать попасть на стажировку
15%
На стажировку не хочу, но задачи разбирать интересно
9%
Тема стажировок не интересует
12%
Посмотреть ответы
Мы ознакомились с тем, что такое хэш-таблицы, и после вопросов про словарь, обычно спрашивают про них.
5-ый вопрос:
Что такое Хэш-таблица?

Хэш-таблица - структура данных, напоминающая ассоциативный массив, позволяющая хранить пары ключ-значение. Ключ при этом должен быть уникальным.

Какая сложность операций с хэш-таблицами?
Добавление/удаление/поиск/получение значения по ключу происходит за О(1).

Какие данные могут быть ключом в хэш таблице?
Как и в словаре, https://t.me/python_simple/89

Что будет если 2 разных ключа получат один и тот же хэш?
Это называется коллизией, при этом в бакете (ячейка таблицы) создается связный список из объектов, в которых хранится ключ и значение. И потом когда нам надо получить конкретный объект, то мы ищем, какому ключу соответствует текущий ключ, когда находим, возвращаем значение.

Что будет, если в этих бакетах будет много значений?
Есть коэффициент load factor, он получается, если разделить кол-во элементов на размер хэш таблицы, когда этот коэффициент становится больше 0.7, то хэш таблица расширяется и все данные перераспределяются уже в новой таблице.

все вопросы
#ps_question
👍4🔥1
Тинькофф задачи с контекста стажировки 2023 Осень:
1. Задача 1
2. Задача 2
3. Задача 3
4. Задача 4
5. Задача 5
6. Задача 6
7. Задача 7
8. Задача 8
9. Задача 9
10. Задача 10
11. Задача 11
12. Задача 12
👍3
Всем привет!
Разместил первые 6 задач из тренировочного контеста. До выходных можно ознакомиться с ними и можно начать что-то делать, но на выходных уже парочку решим, как всегда в комментариях под задачами.
https://t.me/python_simple/116 - оглавление с задачами, также ссылку на него можно найти в закрепе, как и все остальные.
Есть пара особенностей. В отличие от задач на литкоде, тут нет функции, которая принимает параметры и возвращает ответ. Тут параметры надо считывать из входного потока. Для этого используется функцию input(), думаю, что многие из вас с ней знакомы.
Например, если на входном потоке есть несколько строк, то каждую из них надо считать отдельным input-ом.
Далее, небольшой лайфхак, если нам передается строка, в которой несколько чисел, например.
12 32 4 777
input() считает такую строку "12 32 4 777"
Можно написать так и сразу получить 4 инта:
a, b, c, d = map(int, input().split()) - тут мы считываем строку, делим её по пробелу и каждый элемент приводим к числу.
my_list = list(map(int, input().split())) - а так мы получим список интов.

Решение надо распечатать принтом, без возвращения его куда-либо.

Но это не значит, что при решении не надо использовать функции, скорее всего понадобится и это считается хорошим тоном, потом легче разобраться будет и поправить

Протестируем сначала, как пойдут эти задачи, потом пойдем дальше
🔥4👍2
Всем привет! Пасмурная погода - самое хорошее время для решения алгоритмических задач) Можно присоединиться к решению задач из контеста https://t.me/python_simple/116 также по задачам в чате https://t.me/python_simple/109 больше активности, поэтому кто решает, может вступить. Через неделю можно будет сделать отдельный чат по этому контесту, чтобы обсуждать какие-то тонкости решения, но также решения все равно будут тут в канале.
Ссылка, где найти контест, чтобы самому засабмитить свои решения есть в этом посте https://t.me/python_simple/113
4
Ура! 10- ая юбилейная воскресная задачка, закрепляем two pointers на средней задаче, она очень похожа на предыдущую https://t.me/python_simple/112:
10. Remove Duplicates from Sorted Array II (средняя)
leetcode.com/problems/remove-duplicates-from-sorted-array-ii

На вход подается целочисленный массив nums, отсортированный в неубывающем порядке, удалите дубликаты, так, чтобы каждое число повторялось не более 2-х раз. Порядок элементов должен быть сохранен.
Возвратите k после размещения окончательного результата в первых k слотах nums.
Нельзя использовать доп массив для размещения в нем результата.

Пример 1:
Input: nums = [1,1,1,2,2,3]
Output: 5
При этом nums = [1,1,2,2,3,_], но последние элементы не должны быть именно «_», они могут быть чем угодно, их можно не трогать

Пример 2:
Input: nums = [0,0,1,1,1,1,2,3,3]
Output: 7
При этом nums = [0,0,1,1,2,3,3,_,_]

def removeDuplicates(nums):
«Ваше решение»

Ваша задача решить эту задачу на литкоде и успешно засабмитить

*разбор будет в комментариях в нескольких сообщениях, чтобы вы могли подумать над решением


Список всех задач
#ps_leetcode
3👍1
Немного поменяем формат разбора вопросов. Будем как с задачами. Задаю вопрос, затем обсуждаем в комментариях, затем формируем ответ. И запишу по результатам темы, которые стоит осветить отдельно.
6-ой вопрос:
Как передаются значения в функцию, по ссылке или по значению, и что это значит?

Все переменные в функции передаются по ссылке. То есть, если мы внутри функции будем менять переданный туда список, то он будет меняться и вне функции. Поэтому, если мы не хотим менять изначальный объект, то надо передавать копию объекта в функцию или мы должны знать, что условно список не будет изменяться внутри функции. Это относится к изменяемым типам.
С изменяемыми типами все проще. Если мы передадим инт или строку, то внутри функции мы не сможем их изменить.

все вопросы
#ps_question
3
Воскресная задачка. Сегодня не будем ещё начинать новый паттерн литкод задач. Закрепим то, что уже знаем ещё одной задачкой из топ 300 задач)
11. Replace Elements with Greatest Element on Right Side (легкая)
leetcode.com/problems/replace-elements-with-greatest-element-on-right-side

Получаем массив arr, замените каждый элемент в этом массиве самым большим элементом среди элементов справа от него, а последний элемент замените на -1.
После этого верните массив.

Пример 1:
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]

Пример 2:
Input: arr = [400]
Output: [-1]

class Solution:
def replaceElements(self, arr: List[int]) -> List[int]:
«Ваше решение»

Ваша задача решить эту задачу на литкоде и успешно засабмитить

*разбор будет в комментариях в нескольких сообщениях, чтобы вы могли подумать над решением
*задачи среднего уровня, если показалась сложной, это вполне нормально

Список всех задач
#ps_leetcode
🔥4👍1
Всем привет! Расскажите, что вы уже использовали из перечисленного? (мультиселект)
Anonymous Poll
41%
venv
24%
docker
59%
pip
14%
poetry
38%
ничего из этого
7-ой вопрос:
Что такое генераторы и итераторы, в чем разница?

Ответ:
…пишите в комментариях, потом появится тут)

все вопросы
#ps_question
Воскресная задачка.
12. Best Time to Buy and Sell Stock (легкая)
leetcode.com/problems/best-time-to-buy-and-sell-stock

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

Пример 1:
Input: prices = [7,1,5,3,6,4]
Output: 5

Пример 2:
Input: prices = [7,6,4,3,1]
Output: 0

class Solution:
def maxProfit(self, prices: List[int]) -> int:
«Ваше решение»

Ваша задача решить эту задачу на литкоде и успешно засабмитить

*разбор будет в комментариях в нескольких сообщениях, чтобы вы могли подумать над решением
*задачи среднего уровня, если показалась сложной, это вполне нормально

Список всех задач
#ps_leetcode
👍4🔥1
Ходят слухи, что в ближайшие 5 лет в python окончательно избавятся от GIL. Один из киллер вопросов на собеседовании, подкосил не мало разработчиков. Интересно мы успеем до этого события его рассмотреть). Но переживать не стоит, т.к. скорее всего появятся новые вопросы)
🔥3
Прошлый вопрос ещё не достаточно настоялся, но надо двигаться дальше.
Этот вопрос будет предтечей для ещё парочки вопросов в будущем. Также он кажется слишком простым, но надо уметь вслепую набрать декоратор и знать, что это такое. Всегда спрашивают.
8-ой вопрос:
Что такое декоратор?


Напишите простой декоратор.

Напишите декоратор, который принимает параметры


все вопросы
#ps_question
4
На этой неделе хотел разобрать сложную задачу, но думаю, что как подготовка, надо ещё решить среднюю, она как и предыдущая на two pointers и на последовательность значений на графике, но сложнее, хотя если вы решали предыдущие задачи, то она может показаться лёгкой)
13. Container With Most Water (средняя)
Условие - https://telegra.ph/13-Container-With-Most-Water-srednyaya-08-06
Литкод - leetcode.com/problems/container-with-most-water

Ваша задача решить эту задачу на литкоде и успешно засабмитить

*разбор будет в комментариях в нескольких сообщениях, чтобы вы могли подумать над решением
*задачи среднего уровня, если показалась сложной, это вполне нормально

Список всех задач
#ps_leetcode
👍41