Python Simple
226 subscribers
55 photos
6 videos
175 links
by mr.Gold
Download Telegram
Всем привет!
Разместил первые 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
Всем привет, вчера было важное событие, мы решили 6 первых задач из тренировочного контеста Тинькофф, к концу недели выложу условия к вторым 6-ти задачам. Пока можно подтянуться, дорешав их с подсказками в комментариях https://t.me/python_simple/116
👍3
Теперь важный вопрос. Озон ближе к концу месяца набирает будущих программистов на обучение на 3 месяца с дальнейшей стажировкой. Минус, что обучение будет на go, Плюс, что знать надо на базовом уровне любой яп. Учить go-шке они будут во время обучения. Следующий минус - это то, что надо жить в Москве, Спб или Инноволис (Казань), чтобы ходить на очные занятия. Нагрузка 10-12 часов, но лучше закладывать 20. Плюс, что они отлично дают материал и готовят джунов для себя.
Теперь вопрос, надо ли делать подробный обзор на их стажировку и их контест. С учетом того, что я когда-то проходил их мидловскую школу по переходу на go.
Это не совсем вопрос с собеседования, я бы его приплюсовал к предыдущему про декораторы, но он тогда станет слишком большим. Но помнимание замыканий - важная тема в программировании вообще, не привязываясь к python-у.
9-ой вопрос:
Что такое замыкания?


Приведите пример замыкания в python.

все вопросы
#ps_question
Воскресная задача:
Многие компании в качестве средней задачи, но как правило она идет уже как тяжелая, любят давать задачу на интервалы. Тут могут быть вариации, например даны интервалы, найти пересечения или промежутки.
Также эта задача была в контесте для поступления в школу от озона route256. Причем там эта задача была не самой сложной, где-то выше середины в списке, но если ты решал её и все задачи, которые полегче, то этого было достаточно, чтобы набрать проходной балл. Я встречал эту задачу в ВК и Озоне. Но знаю, что и другие компании любят давать подобные задачи.
14. Merge Intervals (средняя)
leetcode.com/problems/merge-intervals/description
Дан массив интервалов , где intervals[i] = [starti, endi], объедините все пересекающиеся интервалы и верните их.

Пример 1:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]

Пример 2:
Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]

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


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

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

Список всех задач
#ps_leetcode
👍3🔥21
В тему вопроса про декораторы.
Пришло интересное решение на задание с декораторами, как будто все верно работает, но что тут не так и почему эта реализация не является корректной?
(Задание: напишите декоратор, который каждый раз при вызове задекорированной ф-ии печатает сообщение)