''' 合并有序链表 ''' from Link_table.link_table import generate_LNode_from_list, print_LNode def merge_two_list(head1, head2): if not head1: return head2 elif not head2: return head1 if head1.val <= head2.val: head1.next = merge_two_list(head1.next, head2) return head1 else: head2.next = merge_two_list(head1, head2.next) return head2 if __name__ == '__main__': head1 = generate_LNode_from_list([1, 4, 5, 7, 9, 12]) print_LNode(head1) head2 = generate_LNode_from_list([2, 3, 6, 10, 13]) print_LNode(head2) head3 = merge_two_list(head1.next, head2.next) print_LNode(head1)
fast = head while fast: fast = fast.next length += 1 print(length) if length < k: return fast = head i = 0 while i < k: fast = fast.next i += 1 slow = head while fast: slow = slow.next fast = fast.next return slow if __name__ == '__main__': head1 = generate_LNode_from_list([1, 4, 5, 7, 9, 12]) print_LNode(head1) node = find_k_node(head1, 6) if node: print(node.val)
head_short = head2 for i in range(abs(l2 - l1)): head_long = head_long.next while head_long is not None and head_short is not None and head_long.val != head_short.val: head_long = head_long.next head_short = head_short.next return head_long def get_length(head): length = 0 cur = head while cur: cur = cur.next length += 1 return length if __name__ == '__main__': head1 = generate_LNode_from_list([1, 2, 3, 4, 5, 6, 7]) print_LNode(head1) head2 = generate_LNode_from_list([8, 9, 6, 7]) print_LNode(head2) rlt = first_common_node(head1, head2) print(rlt.val)