Python | LeetCode

channel icon
Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 3800,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
-4
10 075
подписчиков
-11
~1.2k
охват 1 публикации
0
~4
постов / день
-0,1%
12,3%
ERR % ?

Статистика

Последние публикации

Python | LeetCode
21 декабря 2024 г. 19:07
#medium
Задача: 633. Sum of Square Numbers

Учитывая целое неотрицательное число c, решите, существуют ли два целых числа a и b такие, что a2 + b2 = c.

Пример:
Input: c = 5
Output: true


👨‍💻 Алгоритм:

1⃣Проверка границ: Проверьте, если c меньше 0, немедленно верните false, так как сумма квадратов двух целых чисел не может быть отрицательной.

2⃣Инициализация указателей: Используйте два указателя a и b. Инициализируйте a на 0 и b на значение квадратного корня из c.
Поиск решения: Используйте цикл для поиска a и b, таких что a^2 + b^2 == c:
Если a^2 + b^2 равно c, верните true.
Если a^2 + b^2 меньше c, увеличьте a на 1.
Если a^2 + b^2 больше c, уменьшите b на 1.

3⃣Возвращение результата: Если цикл завершится без нахождения подходящих a и b, верните false.

😎 Решение:
import math

def judgeSquareSum(c: int) -> bool:
a = 0
b = int(math.sqrt(c))
while a <= b:
total = a * a + b * b
if total == c:
return true
elif total < c:
a += 1
else:
b -= 1
return false


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
21 декабря 2024 г. 14:20
Торгуйте валютой с Альфа Форекс!Торгуйте валютой с Альфа Форекс!

Зарабатывайте на Forex бирже с Альфа Форекс💰

✅Лицензия ЦБ
Более 20 лет на рынке Forex👍

Вас ждет самый широкий выбор инструментов в РФ - 40+ валютных пар, включая рублевые! Ввод/вывод 0%, пополнение через СБП, торги от 0.01 лота!

Альфа Форекс - лицензированный Брокер, которому доверяют!❤️

Узнать большеУзнать больше

Финансовые услуги оказывает: ООО «Альфа-Форекс», АО "АЛЬФА-БАНК".

#реклама
alfaforex.ru

О рекламодателе
Python | LeetCode
21 декабря 2024 г. 12:07
#Hard
Задача: 600. Non-negative Integers without Consecutive Ones

Дано положительное целое число n, верните количество чисел в диапазоне [0, n], бинарные представления которых не содержат последовательных единиц.

Пример:
Input: n = 5
Output: 5
Explanation:
Here are the non-negative integers <= 5 with their corresponding binary representations:
0 : 0
1 : 1
2 : 10
3 : 11
4 : 100
5 : 101
Among them, only integer 3 disobeys the rule (two consecutive ones) and the other 5 satisfy the rule.


👨‍💻 Алгоритм:

1⃣Простой метод заключается в переборе всех чисел от 1 до num. Для каждого текущего выбранного числа проверяем все соседние позиции, чтобы выяснить, содержит ли число две последовательные единицы. Если не содержит, увеличиваем количество чисел без последовательных единиц.

2⃣Чтобы проверить, существует ли 1 на позиции x (считая от младшего значащего бита), в текущем числе n, поступаем следующим образом. Сдвигаем двоичную 1 x−1 раз влево, чтобы получить число y, которое имеет 1 только на x-й позиции. Логическое И числа n и y даст результат 1 только если n содержит 1 на позиции x.

3⃣В конце подсчитываем и возвращаем количество чисел в диапазоне [0, n], не содержащих последовательных единиц.

😎 Решение:
class Solution:
def findIntegers(self, num: int) -> int:
def check(n):
i = 31
while i > 0:
if (n & (1 << i)) != 0 and (n & (1 << (i - 1))) != 0:
return False
i -= 1
return True

count = 0
for i in range(num + 1):
if check(i):
count += 1
return count


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
20 декабря 2024 г. 19:07
#easy
Задача: 594. Longest Harmonious Subsequence

Мы определяем гармоничный массив как массив, в котором разница между его максимальным и минимальным значением составляет ровно 1.

Дан целочисленный массив nums, верните длину его самой длинной гармоничной подпоследовательности среди всех возможных подпоследовательностей.

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

Пример:
Input: nums = [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is [3,2,2,2,3].


👨‍💻 Алгоритм:

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

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

3⃣Верните максимальную длину гармоничной подпоследовательности.

😎 Решение:
class Solution:
def findLHS(self, nums: List[int]) -> int:
count = {}
res = 0

for num in nums:
count[num] = count.get(num, 0) + 1
if num + 1 in count:
res = max(res, count[num] + count[num + 1])
if num - 1 in count:
res = max(res, count[num] + count[num - 1])

return res


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
20 декабря 2024 г. 13:48
Соки Il Primo - Искусство быть первымСоки Il Primo - Искусство быть первым

Сок, который станет частью вкусной жизни. Такой яркий и освежающий Il Primo!

Перейти на сайтПерейти на сайт

#реклама
ilprimo-juice.ru

О рекламодателе
Python | LeetCode
20 декабря 2024 г. 12:07
#Easy
Задача: 599. Minimum Index Sum of Two Lists

Даны два массива строк list1 и list2, необходимо найти общие строки с наименьшей суммой индексов.

Общая строка - это строка, которая появляется и в list1, и в list2.

Общая строка с наименьшей суммой индексов - это общая строка, такая, что если она появилась в list1[i] и list2[j], то i + j должно быть минимальным значением среди всех других общих строк.

Верните все общие строки с наименьшей суммой индексов. Верните ответ в любом порядке.

Пример:
Input: list1 = ["Shogun","Tapioca Express","Burger King","KFC"], list2 = ["Piatti","The Grill at Torrey Pines","Hungry Hunter Steakhouse","Shogun"]
Output: ["Shogun"]
Explanation: The only common string is "Shogun".


👨‍💻 Алгоритм:

1⃣Для каждой строки из list1, сравниваем её с каждой строкой из list2, обходя весь список list2. Используем хэш-таблицу map, которая содержит элементы в виде (сумма: список строк). Здесь сумма относится к сумме индексов совпадающих элементов, а список строк соответствует списку совпадающих строк, чья сумма индексов равна этой сумме.

2⃣Во время сравнений, когда находится совпадение строки на i-м индексе из list1 и j-м индексе из list2, создаём запись в map, соответствующую сумме i + j, если такая запись ещё не существует. Если запись с этой суммой уже существует, добавляем текущую строку в список строк, соответствующих сумме i + j.

3⃣В конце обходим ключи в map и находим список строк, соответствующих ключу с минимальной суммой.

😎 Решение:
class Solution:
def findRestaurant(self, list1, list2):
map = {}
for i in range(len(list1)):
for j in range(len(list2)):
if list1[i] == list2[j]:
if i + j not in map:
map[i + j] = []
map[i + j].append(list1[i])
min_index_sum = min(map.keys())
return map[min_index_sum]


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
19 декабря 2024 г. 19:07
#Easy
Задача: 598. Range Addition II

Вам дана матрица M размером m x n, инициализированная нулями, и массив операций ops, где ops[i] = [ai, bi] означает, что значение M[x][y] должно быть увеличено на единицу для всех 0 <= x < ai и 0 <= y < bi.

Подсчитайте и верните количество максимальных чисел в матрице после выполнения всех операций.

Пример:
Input: m = 3, n = 3, ops = [[2,2],[3,3]]
Output: 4
Explanation: The maximum integer in M is 2, and there are four of it in M. So return 4.


👨‍💻 Алгоритм:

1⃣Все операции выполняются на прямоугольной подматрице изначальной матрицы M, заполненной нулями, с верхним левым углом в точке (0,0) и нижним правым углом для операции [i,j] в точке (i,j).

2⃣Максимальный элемент будет тем, на который выполнены все операции. Максимальные элементы будут находиться в области пересечения прямоугольников, представляющих операции. Для определения этой области нужно найти нижний правый угол пересекающейся области (x,y), который равен (min(op[0]), min(op[1])).

3⃣Количество элементов, находящихся в области пересечения, определяется как произведение координат x и y.

😎 Решение:
class Solution:
def maxCount(self, m: int, n: int, ops: List[List[int]]) -> int:
min_a = m
min_b = n
for op in ops:
min_a = min(min_a, op[0])
min_b = min(min_b, op[1])
return min_a * min_b


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
19 декабря 2024 г. 16:42
Программа долгосрочных сбереженийПрограмма долгосрочных сбережений

Получайте до 36 000 ₽ + Налоговый вычет + % от Фонда 😊

Узнать большеУзнать больше

#реклама
gazfond-pn.ru

О рекламодателе
Python | LeetCode
19 декабря 2024 г. 16:42
Python | LeetCode
19 декабря 2024 г. 16:42
Python | LeetCode
19 декабря 2024 г. 16:42
Python | LeetCode
19 декабря 2024 г. 16:42
Python | LeetCode
19 декабря 2024 г. 12:07
#medium
Задача: 593. Valid Square

Даны координаты четырех точек в 2D-пространстве p1, p2, p3 и p4. Верните true, если эти четыре точки образуют квадрат.

Координата точки pi представлена как [xi, yi]. Ввод не дан в каком-либо определенном порядке.

Корректный квадрат имеет четыре равные стороны с положительной длиной и четыре равных угла (по 90 градусов).

Пример:
Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
Output: true


👨‍💻 Алгоритм:

1⃣Определите функцию для вычисления расстояния между двумя точками.

2⃣Проверьте, равны ли все стороны и диагонали для трех уникальных случаев перестановки точек.

3⃣Верните true, если хотя бы одна из проверок проходит.

😎 Решение:
class Solution:
def dist(self, p1, p2):
return (p2[1] - p1[1]) ** 2 + (p2[0] - p1[0]) ** 2

def check(self, p1, p2, p3, p4):
return self.dist(p1, p2) > 0 and \
self.dist(p1, p2) == self.dist(p2, p3) == self.dist(p3, p4) == self.dist(p4, p1) and \
self.dist(p1, p3) == self.dist(p2, p4)

def validSquare(self, p1, p2, p3, p4):
return self.check(p1, p2, p3, p4) or \
self.check(p1, p3, p2, p4) or \
self.check(p1, p2, p4, p3)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
18 декабря 2024 г. 19:07
#medium
Задача: 592. Fraction Addition and Subtraction

Дана строка, представляющая выражение сложения и вычитания дробей, верните результат вычисления в строковом формате.

Окончательный результат должен быть несократимой дробью. Если ваш окончательный результат является целым числом, преобразуйте его в формат дроби с знаменателем 1. Таким образом, 2 должно быть преобразовано в 2/1.

Пример:
Input: expression = "-1/2+1/2+1/3"
Output: "1/3"


👨‍💻 Алгоритм:

1⃣Начните сканирование строки и разделите её на части, содержащие числители и знаменатели, с учетом знаков.

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

3⃣Верните результат в виде строки, представляющей несократимую дробь.

😎 Решение:
def gcd(a, b):
while b:
a, b = b, a % b
return a

class Solution:
def fractionAddition(self, expression: str) -> str:
sign = []
if expression[0] != '-':
sign.append('+')
for char in expression:
if char in '+-':
sign.append(char)

fractions = expression.replace('-', '+-').split('+')
prev_num, prev_den = 0, 1
i = 0

for sub in fractions:
if not sub:
continue
num, den = map(int, sub.split('/'))
g = gcd(prev_den, den)
if sign[i] == '+':
prev_num = prev_num * den // g + num * prev_den // g
else:
prev_num = prev_num * den // g - num * prev_den // g
prev_den = prev_den * den // g
g = abs(gcd(prev_num, prev_den))
prev_num //= g
prev_den //= g
i += 1

return f"{prev_num}/{prev_den}"


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
18 декабря 2024 г. 14:03
Дарим подписку на Яндекс МузыкуДарим подписку на Яндекс Музыку

Ответьте на 1 вопрос и Яндекс Музыка для вас и 3-х ваших близких 60 дней бесплатно.
Кинопоиск и Яндекс Книги тоже в подписке.
Попробуйте сейчас❤️

ПопробоватьПопробовать

#реклама 18+
music.yandex.ru

О рекламодателе
Реклама на Яндексе
Python | LeetCode
18 декабря 2024 г. 12:07
#easy
Задача: 590. N-ary Tree Postorder Traversal

Дано корневое дерево с n-арной структурой, верните обход дерева в постфиксном порядке для значений его узлов.

Сериализация входных данных n-арного дерева представлена в обходе уровней. Каждая группа детей разделяется значением null (см. примеры).

Пример:
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [2,6,14,11,7,3,12,8,4,13,9,10,5,1]


👨‍💻 Алгоритм:

1⃣Инициализируйте стек для хранения узлов и список для хранения значений узлов в обратном порядке.

2⃣Начните с корневого узла и добавьте его в стек. Пока стек не пуст, извлекайте узлы из стека, добавляя их значения в начало списка, и добавляйте всех его детей в стек.

3⃣В конце верните список значений узлов.

😎 Решение:
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children if children is not None else []

class Solution:
def postorder(self, root: 'Node') -> List[int]:
if not root:
return []

stack, output = [root], []
while stack:
node = stack.pop()
output.append(node.val)
stack.extend(node.children)

return output[::-1]


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
18 декабря 2024 г. 10:00
А вы знали что?...

🕵️В Windows есть папка, которая собирает на вас компромат!

Посмотрите видео выше — насколько легко узнать всю информацию о вас

Простых способов узнать о вас практически всё — сотни, и если вы хотите соблюдать хотя бы минимум сетевой гигиены — подпишитесь на IT ВЕДОМСТВО

Они рассказывает о признаках майнеров, как удалить трояны и порно-баннеры за 5 минут

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

💻 Подписываемся на IT ВЕДОМСТВОIT ВЕДОМСТВО — выигрываем призы и соблюдаем цифровую гигиену
Python | LeetCode
17 декабря 2024 г. 19:07
#easy
Задача: 557. Reverse Words in a String III

Дана строка s. Необходимо изменить порядок символов в каждом слове в предложении, сохранив при этом пробелы и начальный порядок слов.

Пример:
Input: s = "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"


👨‍💻 Алгоритм:

1⃣Создайте переменную lastSpaceIndex и установите её значение в -1. Пройдите по каждому символу строки s от 0-го до n-го индекса, используя указатель strIndex.

2⃣Когда strIndex указывает на пробел, определите начало (startIndex = lastSpaceIndex + 1) и конец (endIndex = strIndex - 1) текущего слова. Используя два указателя, измените порядок символов в текущем слове.

3⃣Обновите lastSpaceIndex значением strIndex. После окончания цикла измените порядок символов в последнем слове (от lastSpaceIndex + 1 до конца строки).

😎 Решение:
class Solution:
def reverseWords(self, s: str) -> str:
s = list(s)
lastSpaceIndex = -1
length = len(s)

for strIndex in range(length + 1):
if strIndex == length or s[strIndex] == ' ':
startIndex = lastSpaceIndex + 1
endIndex = strIndex - 1
while startIndex < endIndex:
s[startIndex], s[endIndex] = s[endIndex], s[startIndex]
startIndex += 1
endIndex -= 1
lastSpaceIndex = strIndex

return ''.join(s)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Python | LeetCode
17 декабря 2024 г. 17:42
Гайд. Бизнес + GPT. 26 страниц (PDF)Гайд. Бизнес + GPT. 26 страниц (PDF)

Пошаговые инструкции, скачивай бесплатно!

СкачатьСкачать

#реклама 16+
click.tgtrack.ru

О рекламодателе
Python | LeetCode
17 декабря 2024 г. 12:07
#medium
Задача: 556. Next Greater Element III

Мы можем перемешать строку s, чтобы получить строку t, используя следующий алгоритм:

Дано положительное целое число n. Найдите наименьшее целое число, которое имеет точно такие же цифры, как и число n, и больше самого числа n по значению. Если такого положительного целого числа не существует, верните -1.

Учтите, что возвращенное число должно помещаться в 32-битное целое число. Если существует допустимый ответ, но он не помещается в 32-битное целое число, верните -1.

Пример:
Input: n = 12
Output: 21


👨‍💻 Алгоритм:

1⃣Нахождение и перестановка цифр
Преобразуйте число n в массив цифр. Найдите первую цифру, которая нарушает убывающий порядок (с конца массива). Назовем её индексом i. Найдите первую цифру, которая больше digits[i-1] (с конца массива). Назовем её индексом j. Поменяйте местами цифры на позициях i-1 и j.

2⃣Обратный порядок оставшихся цифр
Обратный порядок части массива от индекса i до конца, чтобы получить наименьшую перестановку, которая больше исходной.

3⃣Проверка результата и преобразование обратно в число
Преобразуйте массив цифр обратно в число. Если число превышает 32-битный предел, верните -1. В противном случае верните полученное число.

😎 Решение:
class Solution:
def swap(self, s, i0, i1):
if i0 == i1:
return s
s = list(s)
s[i0], s[i1] = s[i1], s[i0]
return ''.join(s)

def permute(self, a, l, r):
if l == r:
self.list.append(a)
else:
for i in range(l, r + 1):
a = self.swap(a, l, i)
self.permute(a, l + 1, r)
a = self.swap(a, l, i)

def nextGreaterElement(self, n: int) -> int:
s = str(n)
self.list = []
self.permute(s, 0, len(s) - 1)
self.list.sort()
if s in self.list:
index = self.list.index(s)
if index < len(self.list) - 1:
result = int(self.list[index + 1])
if result <= 2**31 - 1:
return result
return -1


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний