Примерни решения на задачите по тема 5#
Важно Решенията трябва да бъдат в Python стип. Това означава използване на функционалности на езика - list comprehension, generators, etc. Ако решението ви е по-дълго от 10-тина реда, вероятно не е в Питонски стил. Ще бъдат отнемани точки за стил.
За да се зачете задачата ви, трябва да минават всички тестове в LeetCode.
Задача 1 (1т)#
class Solution:
def plusOne(self, digits: list[int]) -> list[int]:
digits = [str(digit) for digit in digits]
return [int(digit) for digit in str(int(''.join(digits)) + 1)]
Задача 2 (1т)#
from collections import Counter
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
s_count = Counter(s)
t_count = Counter(t)
return s_count == t_count
Задача 3 (1т)#
from collections import deque
class Solution:
def sortArrayByParity(self, nums: list[int]) -> list[int]:
deque = Deque()
for num in nums:
if num % 2 == 0:
deque.appendleft(num)
else:
deque.append(num)
return list(deque)
Задача 4 (1.5т)#
class Solution:
def is_word_single_row(self, word: str) -> bool:
first_row = set("qwertyuiop")
second_row = set("asdfghjkl")
third_row = set("zxcvbnm")
word = word.lower()
return any([(set(word) & row) == set(word) for row in [first_row, second_row, third_row]])
def findWords(self, words: list[str]) -> list[str]:
return [word for word in words if self.is_word_single_row(word)]
Задача 5 (1.5т)#
class Solution:
def arrayRankTransform(self, arr: list[int]) -> list[int]:
unique_items = list(set(arr))
unique_sorted = sorted(unique_items)
rank = {item: i+1 for i, item in enumerate(unique_sorted)}
return [rank[item] for item in arr]