一.解题思路
说明:这题一开始是因为忘记了链表这个数据结构所以直接懵逼了,后面去补了一下链表结构后,就比较清楚了大概操作,但是还不够,于是又去参考了一下官方文档说明,发现只需要创建一个头节点就能解决丢失问题(一开始自己想偏了,忽视了能创建节点这个点)
思路:创建一个头节点,和一个游标。通过一次遍历(l1和l2都不为None),判断节点大小,用游标节点来链接较小的节点,最后将不为None的链表挂载到游标节点最后即可。
注意:需要l1和l2的节点移动和游标的节点移动,可以看一下官方提交中的视频演示。
二.代码展示
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
# 创建一个头节点
headNode = ListNode(-1)
# 创建一个游标
cur = headNode
# 只要其中一个为None说明另外一个有序链表中的值都比他大,只需在游标最后链上即可
while l1 and l2:
# 判断l1和l2当前节点值得大小,小的挂载到游标节点上,然后链表向后移动
if l1.val <= l2.val:
cur.next = l1
l1 = l1.next
else:
cur.next = l2
l2 = l2.next
# 游标向后移动
cur = cur.next
# 将不为None的链到游标节点
cur.next = l1 if l1 is not None else l2
# 返回头结点的下一个节点(头部是为了我们能找到后续节点)
return headNode.next
三.总结其他
总结:这个题需要先去了解一下链表的数据结构才能较好的理解next和val是什么。
交流:如果有什么建议或者疑问可以在文章下面回复哈,期待交流。