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
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)