Esempio n. 1
0
 def addTwoNumbers(self, l1, l2):
     """
     :type l1: ListNode
     :type l2: ListNode
     :rtype: ListNode
     """
     dummy = ListNode(0)
     ptr, s = dummy, 0
     while l1 or l2 or s >= 10:
         s //= 10
         if l1:
             s += l1.val
             l1 = l1.next
         if l2:
             s += l2.val
             l2 = l2.next
         ptr.next = ListNode(s % 10)
         ptr = ptr.next
     return dummy.next
Esempio n. 2
0
 def addTwoNumbers_pre(self, l1, l2):
     """
     :type l1: ListNode
     :type l2: ListNode
     :rtype: ListNode
     """
     dummy = ListNode(0)
     current, carry = dummy, 0
     while l1 or l2 or carry:
         val = carry
         if l1:
             val += l1.val
             l1 = l1.next
         if l2:
             val += l2.val
             l2 = l2.next
         carry = val // 10
         current.next = ListNode(val % 10)
         current = current.next
     return dummy.next
 def mergeTwoLists(self, l1, l2):
     """
     :type l1: ListNode
     :type l2: ListNode
     :rtype: ListNode
     """
     dummy = p = ListNode(0)
     while l1 and l2:
         if l1.val < l2.val:
             p.next = l1
             l1 = l1.next
         else:
             p.next = l2
             l2 = l2.next
         p = p.next
     p.next = l1 or l2
     return dummy.next
        if lo + 1 == hi: return lists[lo]
        if lo + 2 == hi: return self.mergeTwoLists(lists[lo], lists[lo + 1])
        m = (lo + hi) // 2
        l1 = self.doMerge(lists, lo, m)
        l2 = self.doMerge(lists, m, hi)
        return self.mergeTwoLists(l1, l2)

    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        dummy = p = ListNode(0)
        while l1 and l2:
            if l1.val < l2.val:
                p.next = l1
                l1 = l1.next
            else:
                p.next = l2
                l2 = l2.next
            p = p.next
        p.next = l1 or l2
        return dummy.next

if __name__ == "__main__":
    l1 = ListNode.stringToListNode("[1, 4, 5]")
    l2 = ListNode.stringToListNode("[1, 3, 4]")
    l3 = ListNode.stringToListNode("[2, 6]")
    print(Solution().mergeKLists([l1, l2, l3]))
Esempio n. 5
0
#!/usr/bin/env python3
from dataStructures import ListNode


class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        dummy = p = ListNode(0)
        while l1 and l2:
            if l1.val < l2.val:
                p.next = l1
                l1 = l1.next
            else:
                p.next = l2
                l2 = l2.next
            p = p.next
        p.next = l1 or l2
        return dummy.next


if __name__ == "__main__":
    l1 = ListNode.stringToListNode("[1, 2, 4]")
    l2 = ListNode.stringToListNode("[1, 3, 4]")
    print(Solution().mergeTwoLists(l1, l2))
Esempio n. 6
0
            ptr.next = ListNode(s % 10)
            ptr = ptr.next
        return dummy.next

    def addTwoNumbers_pre(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        dummy = ListNode(0)
        current, carry = dummy, 0
        while l1 or l2 or carry:
            val = carry
            if l1:
                val += l1.val
                l1 = l1.next
            if l2:
                val += l2.val
                l2 = l2.next
            carry = val // 10
            current.next = ListNode(val % 10)
            current = current.next
        return dummy.next


if __name__ == "__main__":
    a = ListNode.stringToListNode("[2, 4, 3]")
    b = ListNode.stringToListNode("[5, 6, 4]")
    print(Solution().addTwoNumbers(a, b))