您的位置:首页 > 其它

Lintcode 合并两个排序的链表

2016-03-27 18:56 253 查看
将两个排序链表合并为一个新的排序链表

样例

给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。

递归实现:

"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param two ListNodes
@return a ListNode
"""
def mergeTwoLists(self, l1, l2):
# write your code here
if l1 == None:
return l2
if l2 == None:
return l1
mergeHead = None
if l1.val <= l2.val:
mergeHead = l1
mergeHead.next = self.mergeTwoLists(l1.next,l2)
elif l2.val < l1.val:
mergeHead = l2
mergeHead.next = self.mergeTwoLists(l1,l2.next)
return mergeHead


非递归实现:

"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param two ListNodes
@return a ListNode
"""
def mergeTwoLists(self, l1, l2):
# write your code here
if l1 == None:
return l2
if l2 == None:
return l1
ptr1 = l1
ptr2 = l2
l = ListNode(0)
current = l
while(ptr1!= None and ptr2 != None):
if ptr1.val < ptr2.val:
current.next = ptr1
ptr1 = ptr1.next

elif ptr1.val > ptr2.val:
current.next = ptr2
ptr2 = ptr2.next

else:
current.next = ptr1
ptr1 = ptr1.next
current = current.next
current.next = ptr2
ptr2 = ptr2.next

current = current.next
if ptr1 == None:
current.next = ptr2
else:
current.next = ptr1
l = l.next
return l
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: