题目如下:
21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4
代码如下:
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def mergeTwoLists(self, l1, l2): tem1=l1 tem2=l2 if(l1==None): return l2 if(l2==None): return l1 if(l1.val>l2.val): rtype=tem2 tem2=tem2.next else: rtype=tem1 tem1=tem1.next tem_ans=rtype while(tem1!=None and tem2!=None): if(tem1.val>tem2.val): tem_ans.next=tem2 tem_ans=tem_ans.next tem2=tem2.next else: tem_ans.next=tem1 tem_ans=tem_ans.next tem1=tem1.next if(tem1==None): tem_ans.next=tem2 else: tem_ans.next=tem1 return rtype
分析如下:
要将两个已经排序好的序列合并成一个序列,只需要每一次都选两个序列中最小的元素,放在答案序列的末尾即可。
当有一个队列为空的时候,另一个序列直接全部接到答案序列的后面。
返回答案序列。
需要注意的是,输入要排序的序列L1,L2,要先判断一下他们是否为空。
结果如下: