Где порешать алгоритмические задачи на Python?

Для проверки и оттачивания навыков программирования программисты частенько решают разнообразные программистские задачи. Отличный сайт для этого — https://leetcode.com/ (рекомендовано Yandex.HR). Требует регистрации по email.

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

В качестве примера приведу решение своей первой задачи. Условие следующее:

Мое решение на python3:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        if (l1 is None):
            return l2
        if (l2 is None):
            return l1
        l3 = ListNode((l1.val + l2.val) % 10)
        rest = (l1.val + l2.val) // 10
        res = l3
        while ((l1.next is not None) | (l2.next is not None) | (rest != 0)):
            if l1.next:
                l1 = l1.next
            else:
                l1 = ListNode(0)
            if l2.next:
                l2 = l2.next
            else:
                l2 = ListNode(0)
            l3.next = ListNode((l1.val + l2.val + rest) % 10)
            rest = (l1.val + l2.val + rest) // 10
            l3 = l3.next
        
        return res

Решение проверила на нескольких кейсах:

  1. Стандартный кейс из описания задачи
  2. Подан пустой список для сложения
  3. При сложении цифр в середине списка появляется новый десяток
  4. При сложении цифр в конце списка появляется новый десяток

Результат проверки положительный, вот аппрув-скрин, на котором видно, где задать свой пример и как его проверить.

Добавить комментарий