Example #1
0
def append_zeros(head, n):
    h = None
    t = None

    while n > 0:
        if t is None:
            t = Node(0)
            h = t
            n -= 1
            continue

        t.nxt = Node(0)
        n -= 1
        t = t.nxt

    if t is None:
        return head

    t.nxt = head
    return h
Example #2
0
def add_lls(h1, h2):
    c1 = count_nodes(h1)
    c2 = count_nodes(h2)

    ll = h1 if c1 >= c2 else h2
    sl = h1 if ll == h2 else h2

    sl = append_zeros(sl, abs(c1 - c2))

    carry = add_eq_len_lls(ll, sl)

    if carry > 0:
        head = Node(carry)
        head.nxt = h1
        return head

    return h1
Example #3
0
def ll_add_rev(n1,n2,rem):
    if not n1 and not n2 and not rem:
        return None

    val = rem
    if n1:
        val += n1.val
    if n2:
        val += n2.val

    rem = 0

    n = Node(val % 10)

    new_node = ll_add_rev(n1.nxt if n1 else None,
                          n2.nxt if n2 else None,
                          1 if val > 9 else 0)

    n.nxt = new_node

    return n
Example #4
0
 def push(self,val):
     n = Node(val)
     n.nxt = self.top
     self.top = n
     if not self.minstack.peek() or val < self.minstack.peek():
         self.minstack.push(val)