From acd241e713289c565a3d826d54c5d026c6a1dc17 Mon Sep 17 00:00:00 2001 From: Gabriel Donnan <47415809+gabedonnan@users.noreply.github.com> Date: Thu, 12 Jan 2023 10:45:45 +0000 Subject: [PATCH] Create add-two-numbers.py Adds two objects in reverse sorted singly linked lists together --- add-two-numbers.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 add-two-numbers.py diff --git a/add-two-numbers.py b/add-two-numbers.py new file mode 100644 index 0000000..eb134c9 --- /dev/null +++ b/add-two-numbers.py @@ -0,0 +1,37 @@ +# Definition for singly-linked list. +# class ListNode(object): +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution(object): + def addTwoNumbers(self, l1, l2): + """ + :type l1: ListNode + :type l2: ListNode + :rtype: ListNode + """ + lFinal = ListNode() + temp = lFinal + while l1 != None or l2 != None: + if l1 != None: + self.chainAdd(temp, l1.val) + l1 = l1.next + if l2 != None: + self.chainAdd(temp, l2.val) + l2 = l2.next + if temp.next == None and (l1 != None or l2 != None): + temp.next = ListNode() + temp = temp.next + return lFinal + + + def chainAdd(self, lis, num): + if lis.val + num > 9: + if lis.next != None: + lis.val = lis.val + num - 10 + self.chainAdd(lis.next, 1) + else: + lis.val = lis.val + num - 10 + lis.next = ListNode(val = 1) + else: + lis.val = lis.val + num