Python | LeetCode
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
نمایش بیشتر9 162
مشترکین
-324 ساعت
-227 روز
-7030 روز
آرشیو پست ها
9 162
Задача: 735. Asteroid Collision
Сложность: medium
Нам дан массив asteroids, состоящий из целых чисел, представляющих астероиды в ряд. Для каждого астероида абсолютное значение обозначает его размер, а знак - направление движения (положительное - вправо, отрицательное - влево). Каждый астероид движется с одинаковой скоростью. Определите состояние астероидов после всех столкновений. Если два астероида столкнутся, меньший из них взорвется. Если оба одинакового размера, то взорвутся оба. Два астероида, движущиеся в одном направлении, никогда не встретятся.
Пример:
Input: sentence1 = ["great","acting","skills"], sentence2 = ["fine","drama","talent"], similarPairs = [["great","fine"],["drama","acting"],["skills","talent"]] Output: true👨💻 Алгоритм: 1⃣Используйте стек для отслеживания движущихся вправо астероидов. 2⃣Пройдите по массиву астероидов: Если астероид движется вправо, добавьте его в стек. Если астероид движется влево, сравните его с последним астероидом в стеке (если он есть и движется вправо): Если движущийся вправо астероид больше, текущий взорвется. Если движущийся влево астероид больше, последний астероид в стеке взорвется, и продолжите сравнение. Если они одинакового размера, оба взорвутся. 3⃣Добавьте оставшиеся астероиды из стека и текущий астероид в результат. 😎 Решение:
def asteroidCollision(asteroids):
stack = []
for asteroid in asteroids:
while stack and asteroid < 0 < stack[-1]:
if stack[-1] < -asteroid:
stack.pop()
continue
elif stack[-1] == -asteroid:
stack.pop()
break
else:
stack.append(asteroid)
return stack
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 414. Third Maximum Number
Сложность: easy
Если задан целочисленный массив nums, верните третье максимальное число в этом массиве. Если третьего максимального числа не существует, верните максимальное число.
Пример:
Input: nums = [3,2,1] Output: 1👨💻 Алгоритм: 1⃣Инициализируйте три переменные для хранения первого, второго и третьего максимальных чисел, используя значения None или аналогичные значения. 2⃣Пройдитесь по массиву, обновляя переменные первого, второго и третьего максимальных чисел, избегая дубликатов. 3⃣Если третье максимальное число существует, верните его. В противном случае, верните первое максимальное число. 😎 Решение:
def thirdMax(nums):
first = second = third = None
for num in nums:
if num in (first, second, third):
continue
if first is None or num > first:
third = second
second = first
first = num
elif second is None or num > second:
third = second
second = num
elif third is None or num > third:
third = num
return third if third is not None else first
Ставь 👍 и забирай 📚 Базу знаний9 162
Получите IT профессию с официальным ДОКУМЕНТОМ!
Не просто курсы – а полноценное образование с дипломом о профессиональной переподготовке или удостоверением о повышении квалификации, внесенным в Росреестр!
Выбирайте направление:
-Web-разработчик
-Инженер MikroTik
-Специалист по AI и машинному обучению
-Сетевой инженер
-Linux-администратор
-Python-программист
-DevOps-инженер
-Администратор Windows Server
-Специалист по слаботочным сетям (СКС)
Ваши гарантии:
✅Законный документ о квалификации
✅Право на ведение профдеятельности
✅Весомое преимущество при трудоустройстве
✅Поддержка ментора
✅Дистанционное обучение
Инвестируйте в будущее – получите не только знания, но и официальную профессию!
Перейти на сайт
#реклама 16+
dms-it.ru
О рекламодателе
9 162
Задача: 23. Merge k Sorted Lists
Сложность: medium
Вам дан массив из k списков связанных списков, каждый связанный список отсортирован в порядке возрастания. Объедините все связанные списки в один отсортированный связанный список и верните его.
Пример:
Input: lists = [[1,4,5],[1,3,4],[2,6]] Output: [1,1,2,3,4,4,5,6]👨💻 Алгоритм: 1️⃣Создаем новый связный список, который будет хранить объединенные узлы. 2️⃣В каждом проходе находим узел с наименьшим значением из всех первых узлов в списках и добавляем его в новый список. 3️⃣Повторяем процесс, пока все списки не будут объединены. 😎 Решение:
from typing import List, Optional
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
n = len(lists)
newList = ListNode()
new = newList
while n:
# Find list with smallest value
smallestNode = ListNode(float('inf'))
smallestIndex = -1
for i in range(n):
listNode = lists[i]
if listNode and listNode.val < smallestNode.val:
smallestNode = listNode
smallestIndex = i
if smallestIndex == -1:
break
new.next = ListNode(smallestNode.val)
new = new.next
if smallestNode.next:
lists[smallestIndex] = smallestNode.next
else:
lists.pop(smallestIndex)
n -= 1
return newList.next
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 1339. Maximum Product of Splitted Binary Tree
Сложность: medium
Дано корневое дерево. Разделите бинарное дерево на два поддерева, удалив одно ребро так, чтобы произведение сумм поддеревьев было максимальным.
Верните максимальное произведение сумм двух поддеревьев. Поскольку ответ может быть слишком большим, верните его по модулю 10^9 + 7.
Обратите внимание, что вам нужно максимально увеличить ответ до взятия модуля, а не после.
Пример:
Input: root = [1,2,3,4,5,6] Output: 110 Explanation: Remove the red edge and get 2 binary trees with sum 11 and 10. Their product is 110 (11*10)👨💻 Алгоритм: 1⃣Рассчитать сумму значений всех узлов дерева и сохранить суммы всех поддеревьев в списке. 2⃣Перебрать все сохраненные суммы поддеревьев и для каждой вычислить произведение суммы поддерева и разности между общей суммой дерева и данной суммой поддерева. 3⃣Найти максимальное произведение среди всех вычисленных и вернуть его значение по модулю 10^9 + 7. 😎 Решение:
class Solution:
def __init__(self):
self.all_sums = []
def maxProduct(self, root):
total_sum = self.treeSum(root)
best = 0
for s in self.all_sums:
best = max(best, s * (total_sum - s))
return best % 1000000007
def treeSum(self, subroot):
if not subroot:
return 0
left_sum = self.treeSum(subroot.left)
right_sum = self.treeSum(subroot.right)
total_sum = left_sum + right_sum + subroot.val
self.all_sums.append(total_sum)
return total_sum
Ставь 👍 и забирай 📚 Базу знаний9 162
Курс: Договорное право 2.0 – Обновлен в 2025 году
⚡Перестаньте бояться сделок! Освойте договорное право с юристами Ozon, Denuo, BGP Litigation, Verba Legal и НИУ ВШЭ
✨ На курсе «Договорное право» от MDS вы:
» Систематизируете знания по всем ключевым типам договоров
» Научитесь видеть и минимизировать риски в контрактах
» Получите практический навык на разборе реальных документов из практики
» Получите неограниченный доступ к материалам и чат с экспертами для консультаций
🎓Что в программе:
» Базовые принципы и «подводные камни» договорного права
» Глубокий разбор специфики отдельных договоров
» Построение эффективной договорной работы в компании
Промокод «MDS10» дарит дополнительную скидку 10% до конца августа.
Начните составлять безупречные договоры. Оставьте заявку и получите востребованный навык!
Узнать больше
#реклама 16+
mosdigitals.ru
О рекламодателе
9 162
Задача: 943. Find the Shortest Superstring
Сложность: hard
Учитывая массив строк words, верните наименьшую строку, которая содержит каждую строку в words в качестве подстроки. Если существует несколько допустимых строк наименьшей длины, верните любую из них. Вы можете предположить, что ни одна строка в words не является подстрокой другой строки в words.
Пример:
Input: words = ["alex","loves","leetcode"] Output: "alexlovesleetcode"👨💻 Алгоритм: 1⃣Реализовать функцию overlap для вычисления максимального перекрытия двух строк, где одна строка заканчивается, а другая начинается. 2⃣Реализовать функцию merge для объединения двух строк с максимальным перекрытием. Использовать жадный алгоритм для нахождения двух строк с максимальным перекрытием и объединить их, повторяя до тех пор, пока не останется одна строка. 3⃣Вернуть результат. 😎 Решение:
def shortestSuperstring(words):
def overlap(a, b):
max_overlap = 0
for i in range(1, min(len(a), len(b)) + 1):
if a[-i:] == b[:i]:
max_overlap = i
return max_overlap
def merge(a, b, overlap_len):
return a + b[overlap_len:]
while len(words) > 1:
max_overlap = -1
l, r = 0, 0
for i in range(len(words)):
for j in range(len(words)):
if i != j:
ovlp = overlap(words[i], words[j])
if ovlp > max_overlap:
max_overlap = ovlp
l, r = i, j
words.append(merge(words[l], words[r], max_overlap))
words.pop(r)
words.pop(l)
return words[0]
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 110. Balanced Binary Tree
Сложность: easy
Дано бинарное дерево, определите, является ли оно
сбалансированным по высоте.
Пример:
Input: root = [3,9,20,null,null,15,7] Output: true👨💻 Алгоритм: 1️⃣Сначала мы определяем функцию height, которая для любого узла p в дереве T возвращает: -1, если p является пустым поддеревом, т.е. null; 1 + max(height(p.left), height(p.right)) в противном случае. 2️⃣Теперь, когда у нас есть метод для определения высоты дерева, остается только сравнить высоты детей каждого узла. Дерево T с корнем r является сбалансированным тогда и только тогда, когда высоты его двух детей отличаются не более чем на 1 и поддеревья каждого ребенка также сбалансированы. 3️⃣Следовательно, мы можем сравнить высоты двух дочерних поддеревьев, а затем рекурсивно проверить каждое из них: Если root == NULL, возвращаем true. Если abs(height(root.left) - height(root.right)) > 1, возвращаем false. В противном случае возвращаем isBalanced(root.left) && isBalanced(root.right). 😎 Решение:
class Solution:
def height(self, root: TreeNode) -> int:
if not root:
return -1
return 1 + max(self.height(root.left), self.height(root.right))
def isBalanced(self, root: TreeNode) -> bool:
if not root:
return True
return (
abs(self.height(root.left) - self.height(root.right)) < 2
and self.isBalanced(root.left)
and self.isBalanced(root.right)
)
Ставь 👍 и забирай 📚 Базу знаний9 162
Гайд для маркетологов по эффективным онлайн-встречам
Как CMO, PR и digital-маркетологам повысить результативность брейнштормов, совещаний и планерок с командой с помощью онлайн-встреч?
Гайд МТС Линк: 37 страниц полезных материалов, чек-листов и кейсов для эффективных видеовстреч и совещаний.
✅ В гайде:
- Как создать постоянную ссылку на регулярные встречи с подрядчиками, командой или агентствами и подключаться в 2 клика;
- Как управлять встречей и завершить ее четкими договоренностями с ИИ-расшифровкой голоса в текст;
- Как проводить кастдевы, брейнштормы и формулировать гипотезы с помощью 15+ шаблонов в онлайн-досках МТС Линк;
- Как разом пригласить всех участников на синк таким образом, чтобы все пришли.
Бонус внутри: 5 способов не выгореть от бесконечных синков.
✨ Скачайте гайд бесплатно по ссылке
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
9 162
Задача: 273. Integer to English Words
Сложность: hard
Преобразуйте неотрицательное целое число num в его словесное представление на английском языке.
Пример:
Input: num = 123 Output: "One Hundred Twenty Three"👨💻 Алгоритм: 1️⃣Обработка чисел до 20 и кратных 10 до 90: Создать массивы или словари для чисел от 1 до 19 и для кратных 10 от 20 до 90. Если число попадает в эти диапазоны, сразу вернуть соответствующее словесное представление. 2️⃣Обработка сотен, тысяч, миллионов и миллиардов: Разделить число на группы по три цифры (единицы, тысячи, миллионы, миллиарды). Для каждой группы сформировать словесное представление с использованием рекурсивной функции для чисел от 1 до 999. 3️⃣Формирование окончательного результата: Собрать словесное представление всех групп, добавив соответствующие суффиксы (тысячи, миллионы, миллиарды). Соединить все части в одну строку, удалив лишние пробелы. 😎 Решение:
class Solution:
def numberToWords(self, num: int) -> str:
if num == 0:
return "Zero"
def helper(n):
if n == 0:
return ""
elif n < 20:
return below_twenty[n] + " "
elif n < 100:
return tens[n // 10] + " " + helper(n % 10)
else:
return below_twenty[n // 100] + " Hundred " + helper(n % 100)
below_twenty = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"]
tens = ["", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]
thousands = ["", "Thousand", "Million", "Billion"]
result = ""
i = 0
while num > 0:
if num % 1000 != 0:
result = helper(num % 1000) + thousands[i] + " " + result
num //= 1000
i += 1
return result.strip()
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 665. Non-decreasing Array
Сложность: medium
Дан массив nums из n целых чисел. Ваша задача - проверить, можно ли сделать его неубывающим, изменив не более одного элемента.
Мы определяем массив как неубывающий, если для каждого i (индексация с 0), такого что 0 <= i <= n - 2, выполняется условие nums[i] <= nums[i + 1].
Пример:
Input: nums = [4,2,3] Output: true Explanation: You could modify the first 4 to 1 to get a non-decreasing array.👨💻 Алгоритм: 1⃣Инициализация переменных: Завести переменную count для подсчета числа изменений. Проверить последовательность чисел в массиве nums. 2⃣Проверка условий: Если nums[i] > nums[i + 1], то увеличиваем count. Если count превышает 1, возвращаем false, так как больше одного изменения недопустимо. Если nums[i - 1] > nums[i + 1] и nums[i] > nums[i + 2], то возвращаем false. 3⃣Возврат результата: Если количество изменений не превышает 1, вернуть true. 😎 Решение:
class Solution:
def checkPossibility(self, nums: List[int]) -> bool:
count = 0
for i in range(1, len(nums)):
if nums[i] < nums[i - 1]:
if count > 0:
return False
count += 1
if i == 1 or nums[i] >= nums[i - 2]:
nums[i - 1] = nums[i]
else:
nums[i] = nums[i - 1]
return True
Ставь 👍 и забирай 📚 Базу знаний9 162
⚡️ Айтишник из «VISION» скупил топовые айти-курсы и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
903 ГБ — Python
812 ГБ — Frontend
978 ГБ — C, C++
804 ГБ — Java
432 ГБ — C#, GameDev
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin, Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA-Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
9 162
Такси для бизнеса. Яндекс Go
Оптимизируйте свои расходы и повысьте эффективность бизнеса с Яндекс Go
Узнать больше
#реклама
business.go.yandex
О рекламодателе
9 162
Задача: 300. Longest Increasing Subsequence
Сложность: medium
Дан массив целых чисел nums, верните длину самой длинной строго возрастающей подпоследовательности.
Пример:
Input: nums = [10,9,2,5,3,7,101,18] Output: 4 Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.👨💻 Алгоритм: 1⃣Инициализируйте массив dp длиной nums.length, все элементы которого равны 1. dp[i] представляет длину самой длинной возрастающей подпоследовательности, которая заканчивается элементом с индексом i. 2⃣Итерируйтесь от i = 1 до i = nums.length - 1. В каждой итерации используйте второй цикл for для итерации от j = 0 до j = i - 1 (все элементы перед i). Для каждого элемента перед i, проверьте, меньше ли этот элемент, чем nums[i]. Если да, установите dp[i] = max(dp[i], dp[j] + 1). 3⃣Верните максимальное значение из dp. 😎 Решение:
class Solution:
def lengthOfLIS(self, nums: list[int]) -> int:
if not nums:
return 0
dp = [1] * len(nums)
for i in range(1, len(nums)):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 629. K Inverse Pairs Array
Сложность: hard
Для целочисленного массива nums инверсная пара - это пара целых чисел [i, j], где 0 <= i < j < nums.length и nums[i] > nums[j]. Учитывая два целых числа n и k, верните количество различных массивов, состоящих из чисел от 1 до n, в которых существует ровно k инверсных пар. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.
Пример:
Input: n = 3, k = 0 Output: 1👨💻 Алгоритм: 1⃣Инициализация Создайте двумерный массив dp размером [n+1][k+1] и установите начальное значение dp[0][0] = 1. Остальные значения установите в 0. 2⃣Заполнение DP-таблицы Используйте два вложенных цикла для заполнения таблицы DP. Внешний цикл перебирает длину массива i от 1 до n, а внутренний цикл перебирает количество инверсий j от 0 до k. Если j == 0, то dp[i][j] = 1. В противном случае обновляйте dp[i][j] с учетом всех возможных позиций вставки нового элемента в массив длины i-1. 3⃣Возвращение результата Результатом будет значение dp[n][k]. 😎 Решение:
def kInversePairs(n, k):
MOD = 10**9 + 7
dp = [[0] * (k + 1) for _ in range(n + 1)]
dp[0][0] = 1
for i in range(1, n + 1):
dp[i][0] = 1
for j in range(1, k + 1):
dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
if j >= i:
dp[i][j] -= dp[i - 1][j - i]
dp[i][j] %= MOD
return dp[n][k]
Ставь 👍 и забирай 📚 Базу знаний9 162
Дарим подписку на Яндекс Музыку
Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких.
Кинопоиск и Яндекс Книги тоже в подписке.
Попробуйте бесплатно❤️
Попробовать
#реклама 18+
music.yandex.ru
О рекламодателе
Реклама на Яндексе
9 162
Задача: 1007. Minimum Domino Rotations For Equal Row
Сложность: medium
В ряду домино, tops[i] и bottoms[i] представляют собой верхнюю и нижнюю половинки i-го домино. (Домино - это плитка с двумя числами от 1 до 6 - по одному на каждой половине плитки.) Мы можем повернуть i-е домино так, чтобы tops[i] и bottoms[i] поменялись значениями. Верните минимальное количество поворотов, чтобы все значения tops были одинаковыми или все значения bottoms были одинаковыми. Если это невозможно сделать, верните -1.
Пример:
Input: tops = [2,1,2,4,2,2], bottoms = [5,2,6,2,3,2] Output: 2👨💻 Алгоритм: 1⃣Проверка кандидатов: Для начала рассмотрим два кандидата для достижения цели: tops[0] и bottoms[0]. Это кандидаты для унификации значений в ряду домино, поскольку если есть решение, один из этих двух кандидатов должен быть в верхней или нижней строке всех домино. 2⃣Подсчет поворотов для каждого кандидата: Для каждого из кандидатов (tops[0] и bottoms[0]) подсчитайте количество поворотов, необходимых для унификации значений во всех tops или во всех bottoms. Если какой-либо домино не может быть повернут для достижения требуемого кандидата, этот кандидат исключается из рассмотрения. 3⃣Возврат минимального количества поворотов: Верните минимальное количество поворотов из всех возможных кандидатов. Если ни один кандидат не подходит, верните -1. 😎 Решение:
class Solution:
def minDominoRotations(self, tops: List[int], bottoms: List[int]) -> int:
def check(x):
rotations_a = rotations_b = 0
for i in range(len(tops)):
if tops[i] != x and bottoms[i] != x:
return -1
elif tops[i] != x:
rotations_a += 1
elif bottoms[i] != x:
rotations_b += 1
return min(rotations_a, rotations_b)
rotations = check(tops[0])
if rotations != -1 or tops[0] == bottoms[0]:
return rotations
else:
return check(bottoms[0])
Ставь 👍 и забирай 📚 Базу знаний9 162
Высшее образование онлайн — поменяйте жизнь в 2025 году!
✅Набор в сентябре: от 6700 ₽/мес.*
Московский технологический институт предлагает:
— Высшее образование в московском вузе без выезда на сессии
— Полностью дистанционный онлайн-формат
— Возможность обучаться дома, на работе, в путешествии
— Диплом государственного образца
— Более 60 направлений на выбор (IT, инженерные, экономические, педагогические, управленческие и другие)
— 5 способов оплаты обучения
— Поддержка персонального куратора: от поступления до получения диплома
Узнать больше
#реклама 16+
mti-vuz.ru
О рекламодателе
9 162
Задача: 960. Delete Columns to Make Sorted III
Сложность: hard
Вам дан массив из n строк strs, все одинаковой длины.
Мы можем выбрать любые индексы для удаления, и мы удаляем все символы в этих индексах для каждой строки.
Например, если у нас есть strs = ["abcdef","uvwxyz"] и индексы удаления {0, 2, 3}, то итоговый массив после удаления будет ["bef", "vyz"].
Предположим, мы выбрали набор индексов удаления answer таким образом, что после удаления итоговый массив имеет каждую строку (ряд) в лексикографическом порядке. (т.е. (strs[0][0] <= strs[0][1] <= ... <= strs[0][strs[0].length - 1]) и (strs[1][0] <= strs[1][1] <= ... <= strs[1][strs[1].length - 1]) и так далее). Верните минимально возможное значение answer.length.
Пример:
Input: strs = ["babca","bbazb"] Output: 3 Explanation: After deleting columns 0, 1, and 4, the final array is strs = ["bc", "az"]. Both these rows are individually in lexicographic order (ie. strs[0][0] <= strs[0][1] and strs[1][0] <= strs[1][1]). Note that strs[0] > strs[1] - the array strs is not necessarily in lexicographic order.👨💻 Алгоритм: 1⃣Вместо поиска количества удаляемых столбцов, найдем количество столбцов, которые нужно сохранить. В конце мы можем вычесть это значение, чтобы получить желаемый ответ. 2⃣Используйте динамическое программирование, чтобы решить проблему. Пусть dp[k] будет количеством столбцов, которые сохраняются, начиная с позиции k. Мы будем искать максимальное значение dp[k], чтобы найти количество столбцов, которые нужно сохранить. 3⃣Итоговое количество удаляемых столбцов будет равно общей длине строк минус количество сохраненных столбцов. 😎 Решение:
class Solution:
def minDeletionSize(self, A: List[str]) -> int:
W = len(A[0])
dp = [1] * W
for i in range(W - 2, -1, -1):
for j in range(i + 1, W):
if all(row[i] <= row[j] for row in A):
dp[i] = max(dp[i], 1 + dp[j])
return W - max(dp)
Ставь 👍 и забирай 📚 Базу знаний9 162
Задача: 243. Shortest Word Distance
Сложность: easy
Дан массив строк
wordsDict и две разные строки, которые уже существуют в массиве: word1 и word2. Верните кратчайшее расстояние между этими двумя словами в списке.
Пример:
Input: wordsDict = ["practice", "makes", "perfect", "coding", "makes"], word1 = "coding", word2 = "practice" Output: 3👨💻 Алгоритм: 1️⃣Начните с перебора всего массива для поиска первого слова. Каждый раз, когда вы находите встречу первого слова, запомните его позицию. 2️⃣При каждом обнаружении первого слова переберите массив в поисках ближайшего вхождения второго слова, сохраняя позицию и сравнивая расстояние с предыдущими найденными. 3️⃣Сохраняйте минимальное найденное расстояние между двумя словами и возвращайте его в качестве результата. 😎 Решение:
class Solution:
def shortestDistance(self, words, word1, word2):
minDistance = len(words)
for i in range(len(words)):
if words[i] == word1:
for j in range(len(words)):
if words[j] == word2:
minDistance = min(minDistance, abs(i - j))
return minDistance
Ставь 👍 и забирай 📚 Базу знаний