从Python中的两个链表中查找链表交集的程序

假设我们有两个排序的链表L1和L2,我们必须创建一个新的排序的链表,其中包含这两个表的交集。

因此,如果输入像L1 = [2,4,8] L2 = [3,4,8,10],那么输出将是[4,8,]

为了解决这个问题,我们将遵循以下步骤-

  • head:=一个值为0的新节点

  • cur:=头

  • 当l1和l2不为空时,执行

    • 下一个cur:=一个新节点,其值与l1的值相同

    • l1:= l1的下一个

    • l2:=下一个l2

    • cur:=下一个cur

    • l2:=下一个l2

    • l1:= l1的下一个

    • 如果l1的值<l2的值,则

    • 否则,当l2的值<l1的值时,则

    • 除此以外,

    • 返回首位

    让我们看下面的实现以更好地理解-

    示例

    class ListNode:
       def __init__(self, data, next = None):
          self.val = data
          self.next = next
    def make_list(elements):
       head = ListNode(elements[0])
       for element in elements[1:]:
          ptr = head
          while ptr.next:
             ptr = ptr.next
          ptr.next = ListNode(element)
       return head
    def print_list(head):
       ptr = head
       print('[', end = "")
       while ptr:
          print(ptr.val, end = ", ")
          ptr = ptr.next
       print(']')
    class Solution:
       def solve(self, l1, l2):
          head = cur = ListNode(0)
          while l1 and l2:
             if l1.val < l2.val:
                l1 = l1.next
             elif l2.val < l1.val:
                l2 = l2.next
             else:
                cur.next = ListNode(l1.val)
                l1 = l1.next
                l2 = l2.next
                cur = cur.next
          return head.next
    ob = Solution()L1 = make_list([2, 4, 8])
    L2 = make_list([3, 4, 8, 10])
    print_list(ob.solve(L1, L2))

    输入值

    [2, 4, 8], [3, 4, 8, 10]

    输出结果

    [4, 8, ]
    猜你喜欢