Python 中两个链表元素交错的程序
假设我们有两个链表 l1 和 l2,我们需要返回一个链表,该链表通过交错这两个链表的元素来构建,并以 l1 开头。如果任何一个链表还有剩余节点,则应将其追加到列表中。
因此,如果输入类似于 l1 = [5,4,6,3,4,7] l2 = [8,6,9],则输出将为 [5,8,4,6,6,9,3,4,7]
为了解决这个问题,我们将遵循以下步骤 -
ans := l1
当 l2 不为空时,执行以下操作
如果 ans 不为空,则
如果 ans 的下一个节点不为空,则
newnode := 一个具有与 l2 相同值的新链表节点
newnode 的下一个节点 := ans 的下一个节点
ans 的下一个节点 := newnode
ans := newnode 的下一个节点
l2 := l2 的下一个节点
否则,
ans 的下一个节点 := l2
退出循环
否则,
返回 l2
返回 l1
让我们看看下面的实现来更好地理解 -
示例
Source Code (Python): 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): ans = l1 while l2: if ans: if ans.next != None: newnode = ListNode(l2.val, None) newnode.next = ans.next ans.next = newnode ans = newnode.next l2 = l2.next else: ans.next = l2 break else: return l2 return l1 ob = Solution() l1 = make_list([5,4,6,3,4,7]) l2 = make_list([8,6,9]) res = ob.solve(l1,l2) print_list(res)
输入
[5,4,6,3,4,7],[8,6,9]
输出
[5, 8, 4, 6, 6, 9, 3, 4, 7, ]
广告