コード例 #1
0
'''
合并有序链表
'''
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)
コード例 #2
0
    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)
コード例 #3
0
        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)