Finish problem 0002-add-two-numbers
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
class ListNode:
|
||||
def __init__(self, val=0, next=None):
|
||||
self.val = val
|
||||
self.next = next
|
||||
|
||||
|
||||
class Solution:
|
||||
def addTwoNumbers(self, l1: ListNode | None, l2: ListNode | None) -> ListNode | None:
|
||||
dummy = ListNode()
|
||||
curr = dummy
|
||||
carry = 0
|
||||
while l1 or l2 or carry:
|
||||
v1 = l1.val if l1 else 0
|
||||
v2 = l2.val if l2 else 0
|
||||
digit = (v1 + v2 + carry) % 10
|
||||
carry = (v1 + v2 + carry) // 10
|
||||
curr.next = ListNode(digit)
|
||||
curr = curr.next
|
||||
l1 = l1.next if l1 else None
|
||||
l2 = l2.next if l2 else None
|
||||
return dummy.next
|
||||
@@ -0,0 +1,30 @@
|
||||
import pytest
|
||||
from solution import ListNode, Solution
|
||||
|
||||
|
||||
def build(vals):
|
||||
head = None
|
||||
for v in reversed(vals):
|
||||
head = ListNode(v, head)
|
||||
return head
|
||||
|
||||
|
||||
def to_list(node):
|
||||
out = []
|
||||
while node:
|
||||
out.append(node.val)
|
||||
node = node.next
|
||||
return out
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"l1,l2,expected",
|
||||
[
|
||||
([2, 4, 3], [5, 6, 4], [7, 0, 8]),
|
||||
([0], [0], [0]),
|
||||
([9, 9, 9, 9, 9, 9, 9], [9, 9, 9, 9], [8, 9, 9, 9, 0, 0, 0, 1]),
|
||||
],
|
||||
)
|
||||
def test_add_two_numbers(l1, l2, expected):
|
||||
result = Solution().addTwoNumbers(build(l1), build(l2))
|
||||
assert to_list(result) == expected
|
||||
Reference in New Issue
Block a user