将两个有序的链表合并为一个有序链表,空间复杂度O(1).
设置头节点,当链表1和链表2都不为空时,比较l1.val 和 l2.val,将头节点的next指向较小链表的头头节点, 较小的链表头节点指针后移,直至l1或l2有一个为遍历结束, 将另外一个接在新链表的尾端。
# define linked list
class LinkNode(object):
def __init__(self, x):
self.val = x
self.next = None
def create_list():
"""
crate LinkList
:return: head node , LinkNode
"""
pre = LinkNode(int(input()))
head_node = pre
while True:
val = int(input())
if val == -1:
break
pre.next = LinkNode(val)
pre = pre.next
return head_node
def merge(l1: LinkNode, l2: LinkNode):
"""
merge two linklist
:param l1: link list one
:param l2: link list two
:return: new linklist combine with two sorted linklist
"""
new_list = LinkNode(None)
cur_node = new_list