class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        carry = 0
        head = None;
        prev = None;
        while l1 or l2 or carry:
            n1 = l1.val if l1 else 0
            n2 = l2.val if l2 else 0
            carry, num = divmod(n1+n2+carry, 10)
            node = ListNode(num)
            if not head: head = node
            if not prev: prev = node
            else:
                prev.next = node
                prev = node
            if l1: l1 = l1.next
            if l2: l2 = l2.next

        return head



head1 = ListNode.fromArray([5])
head2 = ListNode.fromArray([5])
s = Solution()
s.addTwoNumbers(head1, head2).printChain()
__author__ = 'Lei Chen'
'''
Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
'''

from ListNode import ListNode

class Solution(object):
    def deleteDuplicates(self, head):
        cur = head

        while cur :
            next = cur.next
            while next and cur.val == next.val:
                next = next.next
            cur.next = next
            cur = next

        return head


input = ListNode.fromArray([1])

s = Solution()
ret = s.deleteDuplicates(input)
ret.printChain()