原题:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
在真实的面试中遇到过这道题?
分析:遍历链表,将其合并;注意限于题所给的条件,我们为每个链表添加一个末尾结点,并通过这个末尾结点作为循环停止的依据(注:这里可以指直接判断是否为null,就不用构建一个末尾结点了)
代码:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
t11 = l1
t22 =l2
while t11.next!=None:
t11 = t11.next
t11.next = ListNode(-1)
while t22.next!=None:
t22 = t22.next
t22.next = ListNode(-1)
t1 = l1
t2 = l2
self=ListNode(0)
t3 = self
while ((t1.val !=-1)&(t2.val!=-1)):
if t1.val<t2.val:
t3.next = ListNode(t1.val)
t1 = t1.next
t3 = t3.next
else:
t3.next = ListNode(t2.val)
t2 = t2.next
t3 = t3.next
if t1.val!=-1:
t3.next = t1
else:
t3.next=t2
return self.next
```````
```
self =ListNode(0)
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)
test = mergeTwoLists(self,l1,l2)
while test.next!=None:
print(test.val)
test = test.next
运行结果: