def add2(head1,head2):

    # get each lenght and makup 0 nodes for the shorter one
    l1 = ll.get_length(head1)
    l2 = ll.get_length(head2)
    #print "%d,%d" % (l1,l2)

    if l1>=l2:
        while l1 > l2:
            zero = ll.ListNode(0)
            zero.next = head2
            head2 = zero
            l2 += 1
    else: 
        while l1 < l2:
            zero = ll.ListNode(0)
            zero.next = head1
            head1 = zero
            l1 += 1
    #print "%d,%d" % (l1,l2)
    ll.print_list(head1)
    ll.print_list(head2)
    res,flag = rec(head1,head2,l1-1)
    if flag == 1:
        return res+10**l1
    else:
        return res
Beispiel #2
0
import mylist
cast = [
    'Cleese', 'Palin', 'Jones', 'Idle', ['tmp', 'tmp2', ['in1', 'in2']], 'ok'
]
mylist.print_list(cast)

list2 = ['tmp', 'tmp2']
# print(isinstance(list2, list))
import mylist as ll
import pdb


# check if a list is a palidrome
# O(n2) solution

def isPalidrome(head):
    if not head or not head.next:
        return True
    size = ll.get_length(head)
    return rec(head,size-1)


def rec(head,size):
    if size < 1:
        return True
    a = head
    i = 0
    for i in range(size):
        a = a.next
    return head.val == a.val and rec(head.next,size-2)
   

head1 = ll.create_list([1,2,2])
#head2 = ll.create_list([5,9,2])
ll.print_list(head1)
#ll.print_list(head2)
print isPalidrome(head1)
import mylist as ll

# find the kth element in the list


def return_kth(head, k):
    size = ll.get_length(head)
    if not head or k > size:
        print "invalid input"
        return 0
    # far = size-k+1
    start = head
    end = head
    for i in range(k):
        end = end.next
    while end:
        start = start.next
        end = end.next
    return start.val


head = ll.create_list([1, 2, 3, 4, 5])
ll.print_list(head)
print return_kth(head, 2)